Я предполагаю, что вы ссылаетесь на кластерные индексы, которые вы просматриваете на SQL Server?Насколько мне известно, это относится к различным разновидностям SQL Server (например, Microsoft и Sybase).Фактически кластерный индекс создает таблицу, которая будет упорядочена.Данные в таблице вставляются в порядке кластерного индекса.Другие РСУБД (например, Oracle, Informix и т. Д.) Не используют кластерные индексы.
Первичный индекс - это уникальный индекс.Это тот, который индексирует первичный ключ и обеспечивает уникальность.В таблице может быть только один первичный ключ (таким образом, один первичный индекс), но может быть более одного уникального столбца или комбинации столбцов, поэтому у нас есть индексы-кандидаты;другие уникальные индексы, которые не являются первичным ключом.
Вторичный индекс - это не термин, с которым я встречался, но я считаю (из быстрого Google), что это любой другой, не первичный индекс.Как таковой он может быть уникальным или нет.Если уникальный, то это индекс кандидата.
Таким образом, мы получаем
- кластеризованный индекс
- индекс кандидата
- первичный индекс
- вторичный индекс
И индекс может быть больше одного из них, например, вторичный и уникальный, а также кандидат.
Индекс ускоряет доступ к данным (в некоторых случаях), позволяяСУБД для более быстрого перехода к рассматриваемым данным.Представь, что я говорю, что ты собираешь мне нож и вилку.Вы можете догадаться, что это на кухне и пойти их и начать просматривать розыгрыши.Если у вас есть указатель на то, что ножи хранятся во втором розыгрыше на кухне, вы можете пойти прямо к розыгрышу и взять нож.
Точно так же, потому что мы пишем 'select * from table, где col = 567', СУБД знает, что нужно перейти к таблице, чтобы найти данные.Но если столбец индексирован, RDMBS может перейти прямо к местоположению «567» и выбрать его, не обращая внимания на каждое значение в столбце.