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