Поскольку это индекс, вы должны выбрать столбец (или набор столбцов), который гарантированно будет ненулевым и уникальным во всех случаях. Это самый большой и самый строгий критерий - все, что может быть НЕДЕЙСТВИТЕЛЬНО или дублировано, не может быть и речи с самого начала.
В зависимости от типа запросов, которые вы будете выполнять в этом индексированном представлении, вы также можете посмотреть, есть ли у вас какие-либо столбцы (например, DATE или что-то в этом роде), для которых вы будете выполнять запросы диапазона. Это может сделать интересным кандидатом на ключ кластеризации.
Но главное: ваш ключ кластеризации должен быть уникальным и ненулевым при любых обстоятельствах. И по моему личному опыту, чтобы уменьшить размер индекса (и, следовательно, увеличить количество записей на страницу), я бы попытался использовать как можно меньший ключ - лучше всего использовать один INT или комбинацию двух INT - или, возможно, GUID - но не используйте поля VARCHAR (500) в своем ключе кластеризации!
ОБНОВЛЕНИЕ : всем тем авторам, которые постоянно говорят нам, что кластерные индексы не должны быть уникальными - узнайте, что «Королева индексирования» Кимберли Трипп говорит по этой теме:
Давайте начнем с ключевых вещей, которые я
ищите в ключе кластеризации:
* Unique
* Narrow
* Static
Почему уникальный?
Ключ кластеризации должен быть
уникальный, потому что ключ кластеризации (когда
существует) используется как ключ поиска
из всех некластеризованных индексов. принимать
например, индекс в задней части
книга - если вам нужно найти данные
на что указывает индексная запись - что
запись (индексная запись) должна быть уникальной
в противном случае, какая запись индекса будет
тот, который вы ищете? Так когда
вы создаете кластерный индекс - это
Должно быть уникальным. Но SQL Server
не требует, чтобы ваша кластеризация
Ключ создан на уникальном столбце. Вы
можете создать его на любой колонке
лайк. Внутренне, если кластеризация
ключ не является уникальным, то SQL Server будет
«Унифицировать» это, добавив 4-байтовый
целое число к данным. Так что если
Кластерный индекс создан на
то, что не является уникальным, то не
только есть дополнительные накладные расходы в
создание индекса, тратится впустую диск
место, дополнительные расходы на вставки и
ОБНОВЛЕНИЯ, и в SQL Server 2000,
есть дополнительная стоимость кластера
перестроить индекс (который из-за
плохой выбор для ключа кластеризации
сейчас скорее).
Источник: http://www.sqlskills.com/blogs/kimberly/post/Ever-increasing-clustering-key-the-Clustered-Index-Debateagain!.aspx