Я согласен с Кейд Ру .
Эта статья должна вывести вас на правильный путь:
Следует отметить, что кластеризованные индексы должны иметь уникальный ключ (столбец идентификаторов, который я бы рекомендовал) в качестве первого столбца. В основном это помогает вставлять данные в конец индекса и не вызывает много дискового ввода-вывода и разбиения страницы.
Во-вторых, если вы создаете другие индексы для ваших данных, и они построены умно, они будут использованы повторно.
например, представьте, что вы ищете таблицу по трем столбцам
штат, округ, почтовый индекс.
- Вы иногда ищете только по штатам.
- Вы иногда ищете по штатам и округам.
- Вы часто ищете по штатам, округам, почтовым индексам.
Тогда индекс с государством, графством, почтовым индексом. будет использоваться во всех трех из этих поисков.
Если вы будете выполнять поиск по одному только zip-файлу, то вышеупомянутый индекс не будет использоваться (в любом случае SQL Server), поскольку zip является третьей частью этого индекса, и оптимизатор запросов не посчитает этот индекс полезным.
Затем вы можете создать индекс только на Zip, который будет использоваться в этом случае.
Кстати, мы можем воспользоваться тем фактом, что при многоколоночной индексации первый столбец индекса всегда можно использовать для поиска, а при поиске только по «состоянию» он эффективен, но все же не так эффективен, как индекс по одному столбцу в «состоянии». '
Я предполагаю, что ответ, который вы ищете, заключается в том, что это зависит от того, где вы находитесь, где вы часто используете запросы, а также от вашей группы.
Статья очень поможет. :-)
IDENTITY, GUID, etc
. 3) «Тогда индекс с указанием штата, округа, почтового индекса будет использоваться во всех этих трех поисках». ложно и противоречит "первый столбец пригоден для использования". Вторые столбцы & столбцы в индексе недоступны для поиска.Да. Я рекомендую вам ознакомиться со статьями Кимберли Триппа по индексации .
Если индекс «покрывает», то нет необходимости использовать что-либо, кроме индекса. В SQL Server 2005 вы также можете добавить в индекс дополнительные столбцы, которые не являются частью ключа, что может исключить поездки к остальной части строки.
Наличие нескольких индексов, каждый в одном столбце, может означать, что используется только один индекс - вам нужно будет обратиться к плану выполнения, чтобы увидеть, как влияют различные схемы индексации.
Вы также можете использовать мастер настройки, чтобы определить, какие индексы позволят лучше всего выполнить данный запрос или рабочую нагрузку.
источник
Многостолбцовый индекс можно использовать для запросов, ссылающихся на все столбцы:
Это можно посмотреть напрямую с помощью индекса из нескольких столбцов. С другой стороны, можно использовать не более одного индекса, состоящего из одного столбца (для этого нужно найти все записи, имеющие Column1 = 1, а затем проверить Column2 и Column3 в каждой из них).
источник
Одна вещь, которая, кажется, была пропущена - это звездные превращения. Операторы пересечения индексов разрешают предикат, вычисляя набор строк, попадающих в каждый из предикатов, перед выполнением любого ввода-вывода в таблице фактов. В звездообразной схеме вы индексируете каждый отдельный ключ измерения, и оптимизатор запросов может решить, какие строки выбрать, вычисляя пересечение индекса. Индексы для отдельных столбцов обеспечивают максимальную гибкость для этого.
источник
Если у вас есть запросы, которые будут часто использовать относительно статический набор столбцов, создание единого индекса покрытия, включающего их все, значительно повысит производительность.
Поместив несколько столбцов в ваш индекс, оптимизатор будет иметь доступ к таблице напрямую, только если столбец отсутствует в индексе. Я часто использую их в хранилищах данных. Недостатком является то, что выполнение этого может стоить больших накладных расходов, особенно если данные очень изменчивы.
Создание индексов для отдельных столбцов полезно для операций поиска, часто встречающихся в системах OLTP.
Вы должны спросить себя, почему вы индексируете столбцы и как они будут использоваться. Запустите несколько планов запросов и посмотрите, когда к ним обращаются. Индексная настройка - такой же инстинкт, как и наука.
источник