Мені подобається перевіряти, що говорить Королева індексації Кімберлі Трипп на цю тему:
Я почну з моєї рекомендації щодо кластеризаційного ключа - з кількох причин. По-перше, це легке рішення, а по-друге, прийняття цього рішення на ранніх термінах допомагає попереджати попередження деяких типів фрагментації. Якщо ви можете запобігти певним типам фрагментації базової таблиці, тоді ви можете мінімізувати деякі заходи технічного обслуговування (деякі з яких у SQL Server 2000 І менше, у SQL Server 2005) вимагають, щоб ваша таблиця була в режимі офлайн. Добре, я перейду до реконструкції пізніше .....
Почнемо з ключових речей, які я шукаю в кластеризаційному ключі:
* Unique
* Narrow
* Static
Чому унікальний?
Ключ кластеризації повинен бути унікальним, оскільки кластеризаційний ключ (коли такий існує) використовується як ключ пошуку з усіх некластеризованих індексів. Візьмемо, наприклад, індекс на звороті книги - якщо вам потрібно знайти дані, на які вказує запис індексу - цей запис (запис індексу) повинен бути унікальним, інакше запис індексу буде тим, який ви шукаєте ? Отже, коли ви створюєте кластерний індекс - він повинен бути унікальним. Але SQL Server не вимагає, щоб ваш ключ кластеризації створювався в унікальному стовпці. Ви можете створити його в будь-якому стовпці, який хочете. Якщо внутрішньо ключ кластеризації не є унікальним, тоді SQL Server «уніфікує» його, додавши до даних 4-байтове ціле число. Отже, якщо кластерний індекс створюється на чомусь, що не є унікальним, тоді при створенні індексу не тільки виникають додаткові накладні витрати, але й втрачається дисковий простір,
Джерело: постійно зростаючі ключові дебати щодо кластеризації - знову!