2017-02-15 13 views
1

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

Простой пример: Product и Category таблицы, имеющие п-п отношения, используя ProductCategoryMapping таблицу с 3 колонками: Id идентичности, ProductId и CategoryId.

Если создать уникальный индекс UN_ProductCategoryMapping_Product с 2-мя колонками: ProductId и CategoryId, я должен также создать еще один уникальный индекс в обратном порядке, предположим, что я иногда хочу «список все продукты категории», а иногда «список всех категорий продукт принадлежит к?

Является ли SQL Server достаточно умным для оптимизации в этом случае?

+3

Если у вас есть телефонный справочник, в котором перечислены все имена 'surname, firstname', насколько полезны, по вашему мнению, это будет, если вы хотите знать, насколько распространены каждое имя? –

+0

уникальный индекс для каждого из этих порядков столбцов был бы полезен для поддержки каждого из этих случаев поиска. – SqlZim

ответ

2

Уникальность не зависит от порядка столбцов. Если вы заявляете, что комбинация столбцов 1, 2 и 3 уникальна, а кто-то еще утверждает, что комбинация столбцов 2, 1 и 3 уникальна, вы указываете те же факты.

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

+0

SQL Server может решить сканировать индекс вместо таблицы, поэтому index -can- может использоваться даже для запроса для второго столбца индекса. Это часто происходит, когда индекс мал по сравнению с таблицей (или кластеризованным индексом), и количество требуемых запросов мало или вообще отсутствует. –