Добавить новый столбец только для того, чтобы иметь кластеризованную таблицу - PullRequest
1 голос
/ 16 апреля 2019

Работая над проблемами взаимоблокировки, мне нужно оптимизировать таблицу, в которой использовался столбец guid для кластеризованного первичного ключа.

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

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

Но если этот новый столбец не используется в качестве внешнего ключа или в запросах, действительно ли это полезно?

И если я использую новый столбец идентификаторов в качестве внешнего ключа в других таблицах вместо основного guid, будет ли это (по крайней мере в теории) лучше?

1 Ответ

1 голос
/ 23 мая 2019

Работа над проблемами взаимоблокировки

Что вы можете сказать по этому поводу?

Так что теперь у меня есть куча, и я не уверен в последствияхэтого.

  1. Удаление и вставка позволят таблице увеличиться до больших размеров.
  2. Вам придется выполнять полное сканирование таблицы для каждого запроса, если данные не находятся внекластерный индекс.SQL не может переместить b-дерево в ваши строки данных.

Я знаю, что столбец guid является неправильным выбором для кластеризованного индекса.

Не обязательно, если вы оставляете много места для фрагментации, это может на самом деле ускорить вставки (меньше блокировок страниц в конце) и, таким образом, привести к уменьшению взаимоблокировок.

Так что янамеревался добавить новый столбец целочисленных идентификаторов просто для того, чтобы иметь кластеризованный индекс.

Если люди не будут искать это, это бесполезно.Ваш кластеризованный индекс является наиболее важным индексом, поэтому он должен сортироваться по некоторым столбцам, к которым часто обращаются люди / программы.

...