SQL Server-когда использовать кластеризованный или некластеризованный индекс?
Я знаю основные различия между кластеризованными и некластеризованными индексами и понимаю, как они на самом деле работают. Я понимаю, как кластеризованные и некластеризованные индексы повышают производительность чтения. Но в одном я не уверен: каковы будут причины, по которым я предпочел бы одно другому.
например: если таблица не имеет кластеризованного индекса, следует создать некластеризованный индекс и в чем преимущество выполнения
1 ответов
Я просто хочу вставить слово предупреждения: пожалуйста внимательно выберите кластеризованный индекс! Каждая "обычная" таблица данных должна иметь кластеризованный индекс, поскольку кластеризованный индекс действительно ускоряет множество операций-да,скорость, даже вставки и удаления! Но только если вы выберете хороший кластерный индекс.
Это самые растиражированные структура данных в базе данных SQL Server. Ключ кластеризации будет часть каждого некластеризованного индекса в вашей таблице.
вы должны использовать крайнюю осторожность при выборе ключа кластеризации - это должно быть:
узкий (4 байта идеал)
уникальный (В конце концов, это" указатель строки". Если вы не сделаете его уникальным, SQL Server сделает это за вас в фоновом режиме, что обойдется вам в пару байтов для каждой записи, умноженной на количество строк и количество некластеризованных индексы у вас есть-это может быть очень дорого!)
static (никогда не меняйте - если это возможно)
удобно всевозрастающей таким образом, вы не закончите с ужасной фрагментацией индекса (GUID является полной противоположностью хорошего ключа кластеризации - по этой конкретной причине)
он должен быть ненулевым и в идеале также фиксированной шириной-a
varchar(250)
делает очень плохую кластеризацию ключ
все остальное должно быть действительно вторым и третьим уровнем важности за этими пунктами ....
см. некоторые из Кимберли Трипп (Королева индексации) сообщения в блоге на эту тему-все, что она написала в своем блоге, абсолютно бесценно-читайте, переваривайте это-живите этим!