Как стать автором
Обновить

Оптимизация хранимых процедур в MS SQL Server 2000/2005

Время на прочтение1 мин
Количество просмотров2.6K
Некоторое время назад я писал о случаях низкой производительности хранимых процедур: razbezhkin.habrahabr.ru/blog/24231.html

Описываю, как с этим можно боротся.

Логика очень проста: допустим что низкая производительность обусловлена тем, что при первом выполнении хранимой процедуры план выполнения был оптимизирован для извлечения одной строки. При следующем выполнении этой же хранимой процедуры но с использованием входного параметра, приводящего к выборке из большого количества строк будет использоватся тот же самый план выполнения и откомпелированный код, что и в первом случае.

Решается эта проблема очень просто: если возможно предсказать зависимость количества строк в выборке от входных параметров, например в таком запросе: SELECT * FROM Tab1 WHERE x<@param1
то решение быдет следующем:
Делаете две копии хранимой процедуры, называете их разными именами но программный код у них один и тот же. Пишете третью хранимую процедуру которая в зависимости от велечины параметра вызывает либо одну либо другую процедуру.

Это приводит к тому, что каждая из двух процедур будет оптимизирована и скомпилирована по свое количество возвращаемых строк: первая для малого, а вторая для большого.
Теги:
Хабы:
+1
Комментарии0

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн