Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что работает быстрее? Stored procedure или View 
:(
    Опции темы
Pankon
Дата 23.7.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 739
Регистрация: 2.6.2005

Репутация: нет
Всего: 5



Что работает быстрее? 
Stored procedure или View для запроса с Join ....

Это сообщение отредактировал(а) Pankon - 23.7.2007, 23:02
PM MAIL   Вверх
Oberon83
Дата 25.7.2007, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: нет
Всего: 1



Stored procedure быстрее, поскольку при первом выполнений сервер компилирует хранимку для ускорения запуска.
Но со Stored procedure нельзя работать как с View, смотри сам как тебе удобнее.
--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
ivashkanet
Дата 28.7.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Oberon83, а что мешает SQL серверу скомпилить и сохранить View при первом вызове?
Или у тебя есть проверенная информация, что View не хранится скомпилированном виде?
PM MAIL WWW ICQ   Вверх
SergeBS
Дата 1.8.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 5
Всего: 22



View - это та  же хранимка, только хранится всегда на сервере. Делаем выводы smile
PM MAIL   Вверх
ne_ass
Дата 2.8.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



а разве представление ето хранимая проц, а не динамический запрос???
PM MAIL   Вверх
ivashkanet
Дата 2.8.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: нет
Всего: 149



Цитата(ne_ass @  2.8.2007,  15:37 Найти цитируемый пост)
а разве представление ето хранимая проц, а не динамический запрос??? 

Переведи.

Насколько я понимаю вопрос в том. Что будет быстрее
1) 
Код
select * from MyView

2) Либо вызвать хранимку и получить от неё тот же ответ.
PM MAIL WWW ICQ   Вверх
ne_ass
Дата 2.8.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



"View - это та  же хранимка, только хранится всегда на сервере. Делаем выводы "

вопрос в том, что ето на самом деле, я все время пологал что ето динамический запрос?

И кстати что быстрее select или Stored  Proc  c select??
PM MAIL   Вверх
SergKO
Дата 4.8.2007, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: 17
Всего: 20



Представление - это виртуальная таблица, т.е. в любом случае Вы вынуждены формировать текст запроса к ней либо в той-же процедуре, либо на клиенте. В последнем случае возможны варианты:
1. Выборку по всему представлению 
Код

select * from MyView 
Вы навряд ли будете делать. У запроса будут условия. Когда Вы посылаете из клиента запрос и изменяете условия, то этот запрос будет каждый раз заново компилироваться, для него будет строиться план, запрос с новыми условиями будет помещаться в кэш и т.д и т.п. Т.е. при выполнении 
Код

select * from MyView where 'изменяющиеся условия'

накладные расходы будут больше, чем при обращении к хранимой процедуре. И еще возможность SQL Injection, т.е. атаки, при которой опасный код передается в SQL server. Например
Код

select * from MyView; TRUNCATE TABLE MyTable;
 Любое приложение, создающее и посылающее SQL-инструкции надо обязательно рассматривать на предмет безопасности к вставке потенциально опасного кода. Т.к. "SQL Server выполняет все получаемые синтаксически правильные запросы".
2. Другой вариант - параметризованный запрос (в профайлере его увидите как execute sp_executesql 'текст запроса спараметрами', параметры). Он откомпилируется один раз, разместиться в кэше и будет использоваться при последующих вызовах (как и процедура).

Т.е. можно добиться примерно одинаковой скорости выполнения.

Как мне кажется,  в данном случае не стоит сравнивать скорости. При сравнении процедур и запросов, формируемых на клиенте, надо рассматривать другие вопросы. Использование хранимых процедур дает дополнительную защищенность БД, придает дополнительную гибкость, т.к. при изменении бизнес-логики достаточно изменить текст процедуры, не изменяя клиентское приложение.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.1296 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.