Вопрос по SQL Server Index - PullRequest
       16

Вопрос по SQL Server Index

3 голосов
/ 17 сентября 2009

У меня есть запрос, который объединяет 3 таблицы в SQL Server 2005, но в нем нет предложения Where, поэтому я индексирую поля, найденные в операторе join.col3

И мое объединение

Tbl1
inner join tbl2
On
Tbl1.col3=tbl2.col3
Tbl1.col2=Tbl2.col2
Tbl1.col1=Tbl2.col1

Имеет ли порядок оператор объединения разницу по сравнению с порядком индекса?Должен ли я установить мой индекс Col3, col2, col1?Или измените мой оператор соединения на Col1, col2, col3?

Спасибо

Ответы [ 3 ]

5 голосов
/ 17 сентября 2009

Оптимизатор запросов SQL Server должен это решить. Не нужно менять пример, который вы привели.

Это простой ответ, и он зависит от того, какие столбцы вы выбираете и как вы объединяете 3 таблицы.

Примечание: я лично предпочел бы изменить JOIN, чтобы соответствовать «естественному» порядку. То есть я пытаюсь использовать мои столбцы в том же порядке (JOIN, WHERE), который соответствует моим ключам и / или индексам. Как упоминал Джоэл, это может помочь позже для устранения неполадок.

1 голос
/ 17 сентября 2009

Если у вас всегда есть соединение на Col1-3, то вы должны построить индекс так, чтобы «наиболее различимый столбец» находился в 1-м поле, а самые общие - в последнем поле

Таким образом, поле «Status Ok» / «Status denied» должно быть полем 3, а SSN или Phonenumber должно быть полем в индексе

1 голос
/ 17 сентября 2009

Для запросов , это не имеет значения. Вы можете рассмотреть альтернативные последовательности упорядочения, исходя из следующего:

  • возможное использование индекса для других запросов (включая некоторые с ORDER BY .. один из этих столбцов)
  • для ограничения фрагментации индекса (с помощью ордеров, которые имеют тенденцию добавлять записи к концу таблицы и / или соседним неселективным параметрам)

Редактировать: Если подумать, с первым столбцом, наиболее селективным * может помочь оптимизатору, например, предоставив ему более высокую предполагаемую производительность строки и тому подобное ... Но это Важным вопросом может стать выход за рамки темы, так как вопрос ОП заключался в том, имеет ли значение порядок условий объединения.

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