Ответ 1
Я просто хочу сказать слово предупреждения: пожалуйста, очень внимательно выберите свой кластеризованный индекс! Каждая "обычная" таблица данных должна иметь кластеризованный индекс, так как кластеризованный индекс действительно ускоряет множество операций - да, ускоряет, даже вставляет и удаляет! Но только если вы выберите кластерный индекс хороший.
Это наиболее реплицированная структура данных в базе данных SQL Server. Клавиша кластеризации также будет частью каждого некластеризованного индекса в вашей таблице.
При выборе ключа кластеризации следует проявлять особую осторожность: это должно быть:
-
узкий (идеальный 4 байта)
-
уникальный (это "указатель строки" в конце концов. Если вы не сделаете его уникальным, SQL Server сделает это для вас в фоновом режиме, обойдя вас в пару байтов для каждая запись умножает число строк и количество некластеризованных индексов, которые у вас есть - это может быть очень дорого!)
-
static (никогда не меняйте - если возможно)
-
постоянно растущий, поэтому вы не получите ужасной фрагментации индекса (GUID - это общая противоположность хорошему ключу кластеризации - по этой причине)
-
он должен быть не нулевым и в идеале также фиксированной шириной - a
varchar(250)
делает очень плохой кластерный ключ
Все остальное должно быть вторым и третьим уровнем важности за этими моментами.
Смотрите некоторые из блога Kimberly Tripp (The Queen of Indexing) на эту тему - все, что она написала в своем блоге, абсолютно бесценно - прочитайте, переварите это - живите им!