SQL Server-когда использовать кластеризованный или некластеризованный индекс?

Я знаю основные различия между кластеризованными и некластеризованными индексами и понимаю, как они на самом деле работают. Я понимаю, как кластеризованные и некластеризованные индексы повышают производительность чтения. Но в одном я не уверен: каковы будут причины, по которым я предпочел бы одно другому.

например: если таблица не имеет кластеризованного индекса, следует создать некластеризованный индекс и в чем преимущество выполнения

1 ответов


Я просто хочу вставить слово предупреждения: пожалуйста внимательно выберите кластеризованный индекс! Каждая "обычная" таблица данных должна иметь кластеризованный индекс, поскольку кластеризованный индекс действительно ускоряет множество операций-да,скорость, даже вставки и удаления! Но только если вы выберете хороший кластерный индекс.

Это самые растиражированные структура данных в базе данных SQL Server. Ключ кластеризации будет часть каждого некластеризованного индекса в вашей таблице.

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

  • узкий (4 байта идеал)

  • уникальный (В конце концов, это" указатель строки". Если вы не сделаете его уникальным, SQL Server сделает это за вас в фоновом режиме, что обойдется вам в пару байтов для каждой записи, умноженной на количество строк и количество некластеризованных индексы у вас есть-это может быть очень дорого!)

  • static (никогда не меняйте - если это возможно)

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

  • он должен быть ненулевым и в идеале также фиксированной шириной-a varchar(250) делает очень плохую кластеризацию ключ

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

см. некоторые из Кимберли Трипп (Королева индексации) сообщения в блоге на эту тему-все, что она написала в своем блоге, абсолютно бесценно-читайте, переваривайте это-живите этим!