Какова стоимость обновления кластерного столбца в SQL Server 2008 - PullRequest
1 голос
/ 20 июля 2011

Я новичок в разработке на SQL Server и сейчас читаю книгу. Дело в том, что в этой книге я прочитал, что если я обновлю индексированный столбец, я затрону все записи в этом столбце, потому что индекс подобен указатель книги.

В моей работе SSN (номер социального страхования) является таблицей первичного ключа, и меня попросили включить модификацию de SSN в нашем приложении.

Так что мне интересно .... какова стоимость изменения столбца кластерного индекса?

Заранее спасибо!

1 Ответ

3 голосов
/ 20 июля 2011

Стоимость довольно высока - еще одна причина, по которой хороший ключ кластеризации должен быть статическим, например, никогда не меняйся.

Столбцы с кластеризованным индексом фактически присутствуют и в каждом некластеризованном индексе, поэтому, если у вас есть таблица с 10 некластеризованными индексами, обновите значение столбца, используемого в ключе кластеризации. Таблица также должна выйти и обновить все 10 некластеризованных индексов.

Прочтите сообщение в блоге Кимберли Триппа Постоянно увеличивающийся ключ кластеризации - дебаты по кластерному индексу .......... снова! чтобы узнать, что составляет хороший ключ кластеризации на столе.

Чтобы подвести краткий итог - хороший ключ кластеризации должен быть:

  • узкий - 4 байта идеально, 8 байтов допустимо, что-нибудь кроме того ухудшает производительность ....

  • уникальный - ключ кластеризации - это максимальный поиск ваших данных - если этот столбец (или набор столбцов) не является уникальным, SQL Server добавит 4-байтовый уникальный идентификатор к вашему данные - не рекомендуется ....

  • статический - значение столбца (-ов) кластеризации никогда не должно изменяться - по соображениям производительности

  • постоянно увеличивается - чтобы избежать фрагментации индекса

INT IDENTITY или BIGINT IDENTITY, таким образом, являются наилучшими вариантами для вас - если вы можете, используйте один из них. Избегайте больших составных индексов, избегайте больших строковых столбцов переменной длины, избегайте GUID (тяжело для фрагментации и, следовательно, плохо для производительности)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...