Кластерный индекс определяет физическую структуру вашей таблицы (в определенной степени) - например, он определяет, в каком порядке упорядочены данные. Подумайте о телефонной книге, которая «сгруппирована» (LastName, FirstName) - по крайней мере, в большинстве стран это так.
Вы получаете только один кластеризованный индекс на таблицу - выбирайте его с умом! Согласно Евангелию Королевы индексирования, Кимберли Трипп , ключ кластеризации должен быть узким, стабильным (никогда не изменяться), уникальным (да!) И в идеале постоянно увеличивающимся.
Он должен быть узким, поскольку ключ кластеризации будет добавляться к каждой записи каждого некластеризованного индекса - в конце концов, ключ кластеризации - это значение, используемое для окончательного поиска фактических данных.
Он должен быть стабильным, поскольку постоянное обновление большого количества значений индекса - это дорогостоящее дело, тем более что ключ кластеризации также должен обновляться во всех некластеризованных индексах.
Он должен быть уникальным, поскольку, опять же, это значение, используемое для поиска фактических данных. Если вы выберете столбец, который не гарантированно будет уникальным, SQL Server будет «унифицировать» ваш ключ кластеризации, добавив в него 4-байтовое значение - не очень хорошая вещь.
И в идеале ключ кластеризации должен постоянно увеличиваться, поскольку это вызывает наименьшую фрагментацию страниц и индексов и, следовательно, является лучшим для производительности.
Идеальным кандидатом для ключа кластеризации может быть INT (или BIGINT) IDENTITY - он идеально соответствует всем этим требованиям.
Что касается некластеризованных индексов - используйте и выбирайте их с умом! Есть только одно общее правило, которое я могу вам дать: все столбцы, являющиеся частью внешнего ключа (ссылающиеся на другую таблицу), должны быть в индексе - SQL Server не будет (вопреки распространенному мнению и множеству мифов) размещать такой индекс на месте автоматически - никогда не имеет, никогда не делает.
Кроме этого - вам нужно следить за своей системой, видеть, какие у вас запросы - все столбцы, которые отображаются в предложении WHERE или SORT, являются потенциальным кандидатом для индексации - но слишком много индексов не очень хорошая вещь либо ....