Мысли о создании индекса для SQL Server для отсутствующих индексов - PullRequest
12 голосов
/ 14 января 2009

Я работаю над настройкой производительности своей базы данных SQL Server 2008 и использую выходные данные различных DMV для определения отсутствующих индексов, индексов, которые не используются и т. Д.

Я в основном использую эти 3 скрипта (от SQLServerCentral.com), которые используют данные DMV, которые предоставляет SQL Server:

Окончательный искатель индекса отсутствия

Окончательный поиск дубликатов индекса

Конечный репортер использования индекса

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

Итак, я хотел узнать мнение сообщества и посмотреть, смогут ли люди ответить на несколько вопросов о чтении результатов DMV и структурировании новых индексов.

Имеет ли значение порядок включенных столбцов в индексе?

Примите следующие два предложения по индексам. Что бы вы сделали, чтобы сделать 1 для обоих?

object_name equality_columns                    inequality_columns              included_columns
    Appointment [FranchiseId], [AppointmentTypeId]  [CustomerId], [ApptDateTime]    NULL
    Appointment [FranchiseId], [AppointmentTypeId]  [ApptDateTime]                  [CustomerId]

Если у меня много предложений по индексам с одинаковыми полями равенства и неравенства, но с разными включенными полями, лучше ли включать больше полей или использовать меньше включенных полей? Опять же, цель состоит в том, чтобы создать 1 индекс против 3 (если 3 имеют разные включенные столбцы).

Наконец, если есть какие-либо хорошие ресурсы, которые могут предложить хорошие практические правила или общие рекомендации для подобных вещей, я был бы признателен, если бы эти ссылки были предоставлены.

1 Ответ

2 голосов
/ 14 января 2009

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

Вы должны «читать между строк» ​​большей части документации, но это то, что они подразумевают в этой статье BOL

Это обсуждение немного более ясно, говоря, что порядок не важен.

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

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