2010-08-24 2 views
1

У меня есть запрос, который работает медленно. Я знаю, как правило, повысить производительность, ограничить объединение и попытаться использовать procs вместо прямых запросов. Из-за бизнес-правил я не могу использовать procs. Я уже сократил количество объединений настолько, насколько могу себе представить.Как настроить запрос

Каков следующий шаг в настройке запроса?

+0

Query tuning - очень большое поле, и невозможно сказать, из того, что вы написали, насколько вы умны в этом. Было бы лучше, если бы вы поставили образец запроса и подробно рассказали нам, что вы пробовали. Я даже не знаю, думали ли вы о индексах, или измеряете ли вы производительность со всеми разумными индексами и все еще озадачены. –

+1

Вырезание соединений - это не очень хорошая идея, если возвращаемые данные отличаются. Обычно это не хороший способ настройки производительности, поскольку вы обычно теряете информацию. – HLGEM

+0

[SET SHOWPLAN_ALL] (http://msdn.microsoft.com/en-us/library/ms187735.aspx) – 2014-03-17 16:30:55

ответ

2

проще всего сделать, это перейдите в студию управления, выполните следующую команду:

SET SHOWPLAN_ALL ON 

затем выполните ваш фактический запрос.

Вы не получите свой обычный набор результатов запроса. Он даст вам план выполнения (очень подробный список того, что SQL Server делает для преобразования вашего запроса) в результирующий набор. Посмотрите на результат и попытайтесь узнать, что это значит. Обычно я ищу «SCAN», это медленная часть, и я пытаюсь переписать ее, чтобы она использовала индекс.

3

Добавление индексов - это, вероятно, номер один, который вы можете сделать для повышения производительности запросов, и вы не упомянули об этом.

Вы просмотрели план выполнения, чтобы узнать, можно ли улучшить дополнительные индексы?

Кроме того, вы должны убедиться, что ваши запросы написаны таким образом, чтобы они могли использовать любые индексы, которые являются присутствует эффективно (например, избежать холостого sargable конструкции, избежать *)

+1

Также избегайте обработки строк по строке, что позволяет как можно больше избавиться от коррелированных подзапросов и курсоров. – HLGEM

+1

Также многие люди забывают помещать индексы на FK в свою систему, PK автоматически индексируются, FK - нет. – HLGEM

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