SQL Server будет индексировать справку здесь - PullRequest
1 голос
/ 08 марта 2011

У меня есть таблица со столбцами A, B, C, D и E. В настоящее время существует кластерный индекс для A (первичный ключ, уникальный идентификатор).

Я часто делаю выборки по столбцам A, B и C (т.е. где A = ?? и B = ?? и C = ??). Я также часто выбираю только A, а другие - A, B и D.

Какое преимущество имеет кластеризованный индекс для выборок, которые запрашивают не только столбец A?

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

Примечание. Я использую SQL Server 2005.

Ответы [ 2 ]

0 голосов
/ 08 марта 2011

A - это уникальный идентификатор и первичный ключ с кластеризованным индексом.Это так быстро, как это возможно.Кластерный индекс не поможет вам для запросов, у которых также имеют B и C или B и D, но причина в том, что дополнительные столбцы являются избыточными для запроса;Вы просто не нуждаетесь в них.Одного достаточно, чтобы определить ваш набор результатов, и A - самый быстрый запрос, который вы можете выполнить.Индексы, включающие другие ваши столбцы, помогут вам только тогда, когда у вас есть запросы, в которых А не участвует.

0 голосов
/ 08 марта 2011

Поскольку у вас уже есть кластеризованный индекс на A, вы можете иметь только некластеризованные индексы на других столбцах B и C. Столбцы, которые вы используете в предложениях where. Это, безусловно, поможет сократить время выполнения запроса.

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

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