Вдохновленный этим постом: https://twitter.com/#!/SQLChicken/status/102930436795285505
Кучи: они считаются структурой индекса или строго структурой таблицы без индекса?
Вдохновленный этим постом: https://twitter.com/#!/SQLChicken/status/102930436795285505
Кучи: они считаются структурой индекса или строго структурой таблицы без индекса?
Ответы:
Из MSDN - Организация таблиц и индексов :
«Таблицы SQL Server используют один из двух методов для организации своих страниц данных в разделе:
Строки данных хранятся в порядке на основе ключа кластерного индекса. Кластерный индекс реализован в виде структуры индекса B-дерева, которая поддерживает быстрый поиск строк на основе значений их ключей кластеризованного индекса. Страницы на каждом уровне индекса, включая страницы данных на уровне листа, связаны в двусвязном списке. Однако навигация с одного уровня на другой осуществляется с использованием ключевых значений.
Строки данных не хранятся в каком-либо конкретном порядке, и в последовательности страниц данных нет определенного порядка. Страницы данных не связаны в связанном списке. "
Кучи - Оптимизация SQL Server :
«Таблица кучи по определению является таблицей, которая не имеет кластеризованных индексов. Различные страницы таблицы на основе кучи занимают разные несмежные области на диске, и они никак не связаны друг с другом».
В отличие от структур кластерного индекса : «В SQL Server индексы организованы как B-деревья. Каждая страница в B-дереве индекса называется узлом индекса. Верхний узел B-дерева называется корневым узлом. нижний уровень узлов в индексе называется конечными узлами. Любые уровни индекса между корневым и конечным узлами совместно называются промежуточными уровнями. В кластеризованном индексе конечные узлы содержат страницы данных базовой таблицы . Узлы промежуточного уровня содержат страницы индекса, содержащие строки индекса.Каждый ряд индекса содержит значение ключа и указатель либо на страницу промежуточного уровня в B-дереве, либо на строку данных на уровне листа индекса. Индекс связан в двусвязном списке ".
Другие ссылки:
Индекс подразумевает, что в строках есть порядок данных . Учитывая, что куча не создается с любым таким порядком и не поддерживает порядок, это всего лишь метод хранения данных таблицы.
Есть несколько примеров (скажем, dm_db_index_physical_stats ), где нужно указать кучу, но вы должны ввести индекс с идентификатором 0. Хотя это, кажется, противоречит тому, что я только что сказал, я думаю, что это просто волшебное значение для упрощения API и его использование; ничего больше.
Структура таблицы без кластерного индекса.