2010-01-26 2 views
7

Я задаю этот вопрос в StackOverflow, потому что его правильное место, чтобы спросить ...Советы и хитрости по оптимизации запросов [SQL Server 2005]

Я знаю его очень обширная тема, чтобы начать, но некоторые маленькие которые может быть очень удобно ...

Это может быть полезно для молодых разработчиков, как я, чтобы знать об оптимизации запросов ..

Некоторые Советы и хитрости о оптимизации запросов в SQL Server 2005 ..

ответ

2

Основываясь на вопросы здесь

  • Избегайте типов данных старшинства (например, всегда так же, как на подобное, в том числе длина VARCHAR и т.д.)

например

...WHERE tinyintcol = @intvalue 
means a conversion of the column and invalidates an index 
...WHERE tinyintcol = @tinyintvalue 
  • Избегайте функций на столбцов в предложениях WHERE

например

...WHERE DATEADD(day, 1, MyCol) > GETDATE() 
should be 
...WHERE MyCol > DATEADD(day, -1, GETDATE()) 
  • Накрывающие индексы

  • Идентификаторы GUID: не кластерные индексы

1

Наиболее очевидное место для начала, если у вас медленный запрос, заключается в том, чтобы убедиться, что он использует индекс.

+0

в управлении студию, запустите команду ** set showplan_all on **, затем запустите свой запрос. Запрос не будет запущен, но план выполнения будет сброшен. Посмотрите на этот вывод для слова * scan *, где индекс не используется. –

1
  • Попробуйте уменьшить общее число объединений, если это возможно
  • C onsider размеров таблиц, используемые в запросе
  • Используйте индексы, как они ваш друг
  • Берегись типами, которые вы используете в качестве ключей (INT в целом гораздо проще сравнение, чем два типа VARCHAR)
  • Избегайте использование ' Как и»запросы, где можно попытаться получить значение с помощью равенства первого
1

для запросов я могу добавить к gbn, recursive и smaclell следующим параметрам:

  • стараются свести к минимуму подзапросов, присоединяется
  • избежать excessing блокировок, сохранение контрольно-пропускных пунктах
  • использование прагмами установить создание временную таблицу в памяти
  • использование прагмами установить синхронные OFF
  • использование прагмами отключить триггеры (если это возможно)
  • встраивать INSERT и DELETE запросы в сделках
  • иногда UPDATE медленнее для нескольких записей, чем просто вставить их снова. Поэтому рекомендуется, это выбрать, DELETE, чем программно обновить записи и повторной вставки с существующими ключами (следите за CASCADE и TRIGGERS)
  • проверки с вашим системных администраторов, что кэш БД должен быть включен
Смежные вопросы