Индексы сервера Sql включают первичный ключ?

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

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

Ответы

Ответ 1

Ваш сотрудник сталкивается с "Первичным ключом" с "кластерным ключом индекса" (возможно, потому, что по умолчанию PK, созданный в куче без указания ключевого слова nonclustered, станет кластеризованным индексом таблицы).

Это правда, что в таблице с кластеризованным индексом значение кластерного ключа индекса будет добавлено в качестве включенных столбцов (ов) для всех некластеризованных индексов, чтобы действовать как локатор строк. (хотя столбцы (столбцы) не будут добавлены дважды, если они уже являются частью определения некластерного индекса).

Идеальный кластеризованный индексный ключ

  • unique (Чтобы действовать как локатор строк, он должен быть уникальным - SQL Server добавит в него уникальный идентификатор)
  • узкий (поскольку он воспроизводится во всех некластеризованных индексах)
  • static (не нужно обновлять значение в нескольких разных местах)
  • постоянно увеличивающийся