Первичный ключ почему некластерный индекс и для чего?

Добрый День,

Коллеги,

подскажите почему у некоторых объектов используется два индекса один из них первичный ключ и некластеризованный, а второй кластеризованный, но не первичный?

Изображение удалено.

Таких объектов в базе 92 штуки:

Изображение удалено.

Почему в этих объектах не используется один кластерный индекс? Как безболезненно можно их изменить и не сломать базу? 

Нравится

4 комментария

Здраствуйте!

Кластерный индекс ClusteredPrimaryKeyIndex был добавлен с целью оптимизации работы с таблицей и избежание блокировок.

Вы можете изменять индексы на базе данных свободным образом исходя из наследуемой задачи.

Алёна Доля,

понятно что добавление нового проще, но не согласен, что оно решает проблему.  Почему выбрали не замену первичного ключа на кластеризованный? Так при вставке нужно добавлять записи в 2 индекса вместо одного, что наоборот усложняет работу.

Andrei Korab,

Ранее мы проводили исследования блокировок (long-lock) и пришли к решению использования повсеместно во всех таблицах кластерных индексов в качестве первичных констрейнтов. Но если в таблице присутствуют blob-колонки, то лучшим для производительности будет решение использовать некластеризированный первичный констрейнт с внешним кластеризированным индексом по первичному ключу. Например, как в таблице Account.

Мы настоятельно не рекомендуем изменять эти индексы в базовых таблицах для сохранения корректной работу базовых механизмов. Однако индексы в пользовательских таблицах вы можете изменять.



1) "Почему в этих объектах не используется один кластерный индекс? Как безболезненно можно их изменить и не сломать базу?" - в определенный момент создали дополнительный кластерный ключ для ряда таблиц для избежание блокировок при определенных операциях. Убирать или изменять их не стоит, в таком случае мы не гарантируем корректность работы системы. 

2) "Почему выбрали не замену первичного ключа на кластеризованный? Так при вставке нужно добавлять записи в 2 индекса вместо одного, что наоборот усложняет работу." - да, но это не только замедляет но и помогает. Именно такой набор индексов и выбор первичного ключа показали наилучший результат в среднем по всем кейсам.

Алёна, спасибо за ответ.

Показать все комментарии