3

У меня есть хранимая процедура, которая обычно выполняется довольно быстро (чуть-чуть несколько секунд), но затем есть странные дни, когда один и тот же процесс с теми же параметрами занимает минуты. Но если я дефрагментирую индексы на этом этапе, он снова начнет работать за считанные секунды.MS SQL-запрос медленный из-за плохого плана или фрагментированных индексов

Возможно ли это из-за плохого плана выполнения или фрагментированных индексов?

Если да, есть ли способ, который я могу сделать этой процедурой НЕ ЗАКЛЮЧЕН от планов выполнения или фрагментированных индексов?

Спасибо заранее, Джозеф

+1

Вы должны попытаться выполнить его с повторной компиляцией. Вы также должны включить свою процедуру. –

+0

Спасибо. дайте мне попробовать. –

+0

Не могли бы вы дать более подробную информацию об этом SP? Любой код, фрагмент кода, алгоритмы, параметры могут дать больше подсказок ... –

ответ

4

Ну, в зависимости от вашего SP, решение может быть Повсеместно эти варианты:

1/WITH RECOMPILE может сохранить свой день. Это увеличивает общее время выполнения, перекомпилируя SP, но гарантирует, что у вас будет лучший план выполнения.

2/KEEPFIXED PLAN может быть также вариантом.

3/Это стоит попробовать с OPTIMIZE FOR, если у вас есть набор параметров, которые являются «репрезентативными» с точки зрения статистики.

4/Мониторинг уровня фрагментации на вовлеченных таблицах и индексах. Проверьте, есть ли заявления, которые сильно обновляют таблицы, используемые вашим SP. Если да, update statistics (UPDATE STATISTICS <tablename>;)

5 Параметрическое обнюхивание также может быть основной причиной.

Подробнее вы можете найти в деталях и посмотреть list of causes of recompilations.

+0

Спасибо, Михай, я изучу эти варианты дальше. –

0

Короткий ответ: нет. SQL Server опирается на планы выполнения и индексы, чтобы хорошо работать.

Более длинный ответ: Может быть. Если ваша производительность улучшится сразу после дефрагментации ваших индексов, тогда мой первый вопрос будет: какие индексы и почему они фрагментируются? Вы кластерируете уникальный идентификатор? Обновлена ​​ли ваша статистика? Как выглядит план выполнения?

+0

Извините, но я новичок. –

+0

Не могли бы вы посоветовать мне, как это выяснить? –

 Смежные вопросы

  • Нет связанных вопросов^_^