Хранимые процедуры и динамический SQL имеют одинаковую производительность. Другими словами, нет преимущества в производительности одного над другим. (Между прочим, я ОГРОМНЫЙ сторонник использования сохраненных процедур для всего по множеству других причин, но это не тема под рукой).
Горлышки бутылок могут возникать по многим причинам.
Например, если вы на самом деле генерируете операторы select, очень вероятно, что эти операторы неоптимизированы для данных, необходимых приложению. Например, выполнение SELECT *
, которое вытягивает 50 столбцов назад, по сравнению с SELECT ID, Description
, которое просто вытягивает две необходимые вам в вашем приложении на данный момент. В этом примере объем данных, которые должны быть прочитаны с диска, переданы по сетевому проводу и помещен в объекты в памяти веб-сервера, не является тривиальным.
Они должны оцениваться в каждом конкретном случае.
Я бы настоятельно рекомендовал, если у вас есть «медленное» приложение, которое необходимо для повышения производительности Самое первое, что вам нужно сделать , - это профилировать приложение. Какая часть этого работает медленно? Это может быть внутри сервера базы данных, это может быть на вашем среднем уровне, это может быть даже функцией вашей пропускной способности сети или ограничений памяти / нагрузки на вашем веб-сервере. Черт возьми, может быть, где-то там скрывается команда WAIT, которую поместил какой-то предыдущий программист, покинувший компанию ...
Короче говоря, вы абсолютно не знаете, с чего начать. Так что смотреть на реальный код преждевременно. Зайдите в профиль приложения и посмотрите, где все замедляется. Вы можете обнаружить, что производительность может радикально улучшиться, просто добавив больше памяти на сервер базы данных ... Это гораздо более дешевая альтернатива, чем переписывание, тестирование и развертывание огромных объемов кода.