УЦ Контакт

Лидер IT образования

Как приятно знать, что ты что-то узнал (Мольер)

 
03056, Киев, пер. Ковальский 13, 1-й этаж, офис №2
 
Программы курсов

Акция! Студентам - Скидка 15%! Слушателям IT Academy бесплатное посещение English Club

Статья>>Курсы SQL serveг - возвращение данных

Приглашаем вас посетить курсы программирования баз данных, которые станут неотъемлемым атрибутом в программировании даже в web.

    Чтобы улучшить производительность запроса, следует ограничивать число строк и столбцов, возвращаемых запросом. По мере роста размера таблицы обязательно следует включать в запросы предложение WHERE с высокой степенью селективности, чтобы уменьшить число строк до управляемого размера. Кроме того, чтобы уменьшить сетевой трафик и потребности в памяти для возвращенного набора данных, число столбцов, возвращаемых запросом, должно быть ограничено только теми столбцами, которые необходимы для выполнения операций запроса. Сокращение числа столбцов, возвращаемых отдельными запросами, увеличивает возможность того, что для таких запросов может быть генерировано покрытие индексами. Покрытие индексами может заставить оптимизатор отказаться от дорогостоящих поисков закладок (bookmark lookups). Часто при настройке хранимой процедуры сокращение числа столбцов, возвращаемых запросом, устраняет проблемы произвдительности, связанные с поисками закладок. Дополнительная выгода сокращения числа столбцов, возвращаемых запросом, при отказе от SELECT * состоит в изоляции запроса от изменений схемы таблиц, на которые есть ссылки в запросе. Дополнительные столбцы, возвращаемые запросами, которые не учтены некоторыми клиентскими приложениями, могут вызывать вывод на экран клиента сообщений об ошибке. Настоятельно рекомендую, чтобы Вы не создавали никаких хранимых процедур, используя sp_ как префикс. Сервер SQL всегда ищет хранимую процедуру, начинающуюся sp_, в следующем порядке:

           1. Хранимая процедура в базе данных master.
           2. Хранимая процедура, основанная на любых предоставленных квалификаторах (имя базы данных или имя владельца).
           3. Хранимая процедура, используя dbo в качестве владельца, если Вы не указали другого владельца.


Поэтому, даже если разработанная пользователем хранимая процедура с префиксом с sp_ существует в текущей базе данных, сначала всегда проверяется база данных master. Это справедливо, даже если хранимая процедура квалифицирована именем базы данных. Следует также отметить, что, если какая-нибудь разработанная пользователем хранимая процедура имеет имя, совпадающее с именем системной хранимой процедуры, то разработанная пользователем хранимая процедура никогда не будет выполняться. Другая проблема, связанная с префиксом sp_ в имени пользовательской хранимой процедуры, заключается в том, что вызов хранимой процедуры первоначально пропустит скомпилированный план выполнения в кэше, что может вызвать задержку из-за блокировок компиляции.