В настоящее время я читаю об основах B+ Tree
и запутался в отношении распределения пространства для кластеризованного и некластеризованного индекса.
Когда мы создаем кластеризованный индекс на B+ tree
, индекс сохраняется в основной памяти, а листья содержат указатели данных на фактические блоки. Блоки хранятся на дисках, а блоки содержат запись.
- Обычно кластеризованный индекс создается по первичному ключу.
- Может быть только один кластеризованный индекс
Теперь предположим, что у нас есть таблица (id, имя, класс), и я создал два некластеризованных индекса для name
и class
. Я сомневаюсь, где будет храниться некластеризованный индекс? и как будет производиться поиск query
лайка
select id, name, class from table where id = 3, name='Leo' and class='10'
Мое предположение:
- Поскольку поле id является первичным ключом, первое использование кластеризованного индекса будет иметь значение id = 3.
- Теперь с помощью некластеризованного индекса по
name
иclass
найдем остальные поля
Как вы думаете, мое предположение верно? Не могли бы вы подробнее рассказать о хранении кластеризованного индекса? Образует ли индекс (кластеризованный и некластеризованный n-арное дерево?). Я не могу визуализировать кластеризованный и некластеризованный индекс вместе.