Кучи считаются индексной структурой или они строго являются табличной структурой без индекса?

Ответы:

9

Из MSDN - Организация таблиц и индексов :

«Таблицы SQL Server используют один из двух методов для организации своих страниц данных в разделе:

  • Кластерные таблицы - это таблицы с кластерным индексом.

Строки данных хранятся в порядке на основе ключа кластерного индекса. Кластерный индекс реализован в виде структуры индекса B-дерева, которая поддерживает быстрый поиск строк на основе значений их ключей кластеризованного индекса. Страницы на каждом уровне индекса, включая страницы данных на уровне листа, связаны в двусвязном списке. Однако навигация с одного уровня на другой осуществляется с использованием ключевых значений.

  • Кучи - это таблицы, которые не имеют кластеризованного индекса.

Строки данных не хранятся в каком-либо конкретном порядке, и в последовательности страниц данных нет определенного порядка. Страницы данных не связаны в связанном списке. "

Кучи - Оптимизация SQL Server :

«Таблица кучи по определению является таблицей, которая не имеет кластеризованных индексов. Различные страницы таблицы на основе кучи занимают разные несмежные области на диске, и они никак не связаны друг с другом».

В отличие от структур кластерного индекса : «В SQL Server индексы организованы как B-деревья. Каждая страница в B-дереве индекса называется узлом индекса. Верхний узел B-дерева называется корневым узлом. нижний уровень узлов в индексе называется конечными узлами. Любые уровни индекса между корневым и конечным узлами совместно называются промежуточными уровнями. В кластеризованном индексе конечные узлы содержат страницы данных базовой таблицы . Узлы промежуточного уровня содержат страницы индекса, содержащие строки индекса.Каждый ряд индекса содержит значение ключа и указатель либо на страницу промежуточного уровня в B-дереве, либо на строку данных на уровне листа индекса. Индекс связан в двусвязном списке ".

Другие ссылки:

Мэриан
источник
10

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

Есть несколько примеров (скажем, dm_db_index_physical_stats ), где нужно указать кучу, но вы должны ввести индекс с идентификатором 0. Хотя это, кажется, противоречит тому, что я только что сказал, я думаю, что это просто волшебное значение для упрощения API и его использование; ничего больше.

Джон Сайгель
источник
4

Структура таблицы без кластерного индекса.


источник