индексные файлы в базе данных - PullRequest
2 голосов
/ 27 мая 2011

Может кто-нибудь объяснить, как индексные файлы работают в базе данных?

А именно, первичный вторичный и кластерный индекс? Я не понимаю, что первичные индексы используются для упорядоченных столбцов в базе данных, а вторичные - для неупорядоченных файлов в базе данных. Я могу понять, заказав индексный файл, мы можем выполнить двоичный поиск, чтобы быстрее найти запись, но я думаю, что я не понимаю, в чем смысл использования первичного индекса, когда он обращается к уже упорядоченному столбцу? Разве вы не можете применить оптимизированный алгоритм поиска к самому столбцу, в отличие от создания первичного индекса?

1 Ответ

0 голосов
/ 27 мая 2011

Я предполагаю, что вы ссылаетесь на кластерные индексы, которые вы просматриваете на SQL Server?Насколько мне известно, это относится к различным разновидностям SQL Server (например, Microsoft и Sybase).Фактически кластерный индекс создает таблицу, которая будет упорядочена.Данные в таблице вставляются в порядке кластерного индекса.Другие РСУБД (например, Oracle, Informix и т. Д.) Не используют кластерные индексы.

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

Вторичный индекс - это не термин, с которым я встречался, но я считаю (из быстрого Google), что это любой другой, не первичный индекс.Как таковой он может быть уникальным или нет.Если уникальный, то это индекс кандидата.

Таким образом, мы получаем

  1. кластеризованный индекс
  2. индекс кандидата
  3. первичный индекс
  4. вторичный индекс

И индекс может быть больше одного из них, например, вторичный и уникальный, а также кандидат.

Индекс ускоряет доступ к данным (в некоторых случаях), позволяяСУБД для более быстрого перехода к рассматриваемым данным.Представь, что я говорю, что ты собираешь мне нож и вилку.Вы можете догадаться, что это на кухне и пойти их и начать просматривать розыгрыши.Если у вас есть указатель на то, что ножи хранятся во втором розыгрыше на кухне, вы можете пойти прямо к розыгрышу и взять нож.

Точно так же, потому что мы пишем 'select * from table, где col = 567', СУБД знает, что нужно перейти к таблице, чтобы найти данные.Но если столбец индексирован, RDMBS может перейти прямо к местоположению «567» и выбрать его, не обращая внимания на каждое значение в столбце.

...