Ответ 1
Хранимые процедуры быстрее кода SQL
Это миф, производительность всегда эквивалентна, из книги: Разработка решений Microsoft®.NET для предприятия:
SQL - это язык, на котором вы объявляете о своих намерениях относительно операций (запросов, обновлений или операций управления), выполняемых в базе данных. Все, что получает движок базы данных - это текст. Подобно исходному файлу С#, обрабатываемому компилятором, исходный код SQL должен быть каким-то образом скомпилирован для получения последовательности операций с базами данных более низкого уровня - этот вывод проходит под именем плана выполнения. Концептуально генерация плана выполнения может рассматриваться как аналог базы данных при компиляции программы.
Предполагаемый выигрыш в производительности, который гарантируют хранимые процедуры по сравнению с простым кодом SQL, заключается в повторном использовании плана выполнения. Другими словами, при первом запуске SP СУБД генерирует план выполнения, а затем выполняет код. В следующий раз он просто повторно использует ранее сгенерированный план, тем самым выполняя команду быстрее. Все команды SQL нуждаются в плане выполнения.
(Ложный) миф состоит в том, что СУБД повторно использует план выполнения только для хранимых процедур. Что касается SQL Server и СУБД Oracle, преимущество повторного использования планов выполнения распространяется на любые операторы SQL. Цитирование из электронной документации по SQL Server 2005:
Когда в SQL Server 2005 выполняется какой-либо оператор SQL, реляционный механизм сначала просматривает кэш процедур, чтобы проверить, существует ли существующий план выполнения для того же оператора SQL. SQL Server 2005 повторно использует любой существующий план, что позволяет сэкономить на перекомпиляции оператора SQL. Если существующий план выполнения не существует, SQL Server 2005 создает новый план выполнения для запроса.
Споры о том, что SP работают лучше, чем обычный SQL-код, бессмысленны. С точки зрения производительности любой код SQL, попадающий в базу данных, обрабатывается одинаково. Производительность эквивалентна после компиляции. Период.