| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Что работает быстрее? |
| Автор: Pankon 23.7.2007, 22:56 |
| Что работает быстрее? Stored procedure или View для запроса с Join .... |
| Автор: Oberon83 25.7.2007, 08:11 |
| Stored procedure быстрее, поскольку при первом выполнений сервер компилирует хранимку для ускорения запуска. Но со Stored procedure нельзя работать как с View, смотри сам как тебе удобнее. |
| Автор: ivashkanet 28.7.2007, 17:56 |
| Oberon83, а что мешает SQL серверу скомпилить и сохранить View при первом вызове? Или у тебя есть проверенная информация, что View не хранится скомпилированном виде? |
| Автор: SergeBS 1.8.2007, 08:18 |
| View - это та же хранимка, только хранится всегда на сервере. Делаем выводы |
| Автор: ne_ass 2.8.2007, 15:37 |
| а разве представление ето хранимая проц, а не динамический запрос??? |
| Автор: ne_ass 2.8.2007, 16:38 |
| "View - это та же хранимка, только хранится всегда на сервере. Делаем выводы " вопрос в том, что ето на самом деле, я все время пологал что ето динамический запрос? И кстати что быстрее select или Stored Proc c select?? |
| Автор: SergKO 4.8.2007, 08:47 | ||||||
| Представление - это виртуальная таблица, т.е. в любом случае Вы вынуждены формировать текст запроса к ней либо в той-же процедуре, либо на клиенте. В последнем случае возможны варианты: 1. Выборку по всему представлению
накладные расходы будут больше, чем при обращении к хранимой процедуре. И еще возможность SQL Injection, т.е. атаки, при которой опасный код передается в SQL server. Например
2. Другой вариант - параметризованный запрос (в профайлере его увидите как execute sp_executesql 'текст запроса спараметрами', параметры). Он откомпилируется один раз, разместиться в кэше и будет использоваться при последующих вызовах (как и процедура). Т.е. можно добиться примерно одинаковой скорости выполнения. Как мне кажется, в данном случае не стоит сравнивать скорости. При сравнении процедур и запросов, формируемых на клиенте, надо рассматривать другие вопросы. Использование хранимых процедур дает дополнительную защищенность БД, придает дополнительную гибкость, т.к. при изменении бизнес-логики достаточно изменить текст процедуры, не изменяя клиентское приложение. |