добавление индекса на сервер sql - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть запрос, который часто запускается. это dynmaic SQL-запрос, потому что сортировка по изменениям.

SELECT userID, ROW_NUMBER(OVER created) as rownumber
from users
where
  divisionID = @divisionID and isenrolled=1

ОБЩАЯ часть запроса может быть:

  • 1007 * идентификатор *
  • 1009 * создан *

Должен ли я создать индекс для:

  • DivisionID + isenrolled
  • DivisionID + isenrolled + each_sort_by_option?

Где я должен поместить индексы для этой таблицы?

Ответы [ 2 ]

2 голосов
/ 16 ноября 2009

Я бы начал с

CREATE INDEX IX_SOQuestion ON dbo.users (divisionID, isenrolled) INCLUDE (userID, created)
  • Ранжирование created не связано с предложением WHERE, поэтому можно просто ВКЛЮЧИТЬ его (чтобы оно охватывало), а не в ключевые столбцы. В любом случае потребуется внутренняя сортировка, так зачем увеличивать ключ?

  • Могут быть включены и другие столбцы сортировки

  • userid требуется только для вывода, поэтому ВКЛЮЧИТЕ его

  • возможно, зачислен в INCLUDE, если он бит. Только 2 состояния (ОК, 3 с NULL), поэтому добавлять ключевые столбцы к ключу бессмысленно

0 голосов
/ 16 ноября 2009

Начните с divisionID + isenrolled + userID, так как он всегда будет использоваться

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