Советы и рекомендации по оптимизации запросов [SQL Server 2005] - PullRequest
7 голосов
/ 26 января 2010

Я задаю этот вопрос в stackoverflow, потому что это правильное место, чтобы спросить ...

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

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

Некоторые Советы и рекомендации Об Оптимизация запросов в SQL Server 2005 ..

Ответы [ 4 ]

2 голосов
/ 26 января 2010

На основе вопросов здесь

например

...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 голос
/ 26 января 2010

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

  • попытаться свести к минимуму подзапросы, присоединяется
  • избегать лишних блокировок, сохраняя контрольные точки
  • использовать прагмы для настройки создания временной таблицы в памяти
  • используйте прагмы для установки синхронного ВЫКЛ.
  • использовать прагмы для отключения триггеров (если возможно)
  • вставка INSERT и DELETE запросов в транзакции
  • иногда UPDATE медленнее для нескольких записей, чем просто вставлять их снова. Поэтому рекомендуется ВЫБРАТЬ, УДАЛЯТЬ, а затем программно обновить записи и повторно ВСТАВИТЬ с существующими ключами (обратите внимание на CASCADE и TRIGGERS)
  • проверьте у системных администраторов, что кеш БД должен быть включен
1 голос
/ 26 января 2010
  • Постарайтесь сократить общее количество объединений, если это возможно
  • Рассмотрим размеры таблиц, использованные в запросе
  • Используйте индексы, как они ваши друзья
  • Остерегайтесь типов, которые вы используете в качестве ключей (сравнение между int и int намного проще, чем двумя varchars)
  • Старайтесь по возможности не использовать запросы «Мне нравится», попробуйте сначала получить значение, используя равенство
1 голос
/ 26 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...