Натхненний цим дописом: https://twitter.com/#!/SQLChicken/status/102930436795285505
Купи: Чи вважаються вони структурою індексу або вони строго є структурою таблиці без індексу?
Натхненний цим дописом: https://twitter.com/#!/SQLChicken/status/102930436795285505
Купи: Чи вважаються вони структурою індексу або вони строго є структурою таблиці без індексу?
Відповіді:
Від MSDN - Таблиця та організація індексу :
"Таблиці SQL Server використовують один з двох методів для організації своїх сторінок даних у розділі:
Рядки даних зберігаються в порядку, заснованому на кластерному індексному ключі. Кластеризований індекс реалізований як структура індексу B-дерева, яка підтримує швидке отримання рядків на основі їх кластеризованих ключових значень індексу. Сторінки кожного рівня індексу, включаючи сторінки даних на рівні аркушів, пов’язані у подвійному зв’язку списку. Однак навігація з одного рівня на інший здійснюється за допомогою ключових значень.
Рядки даних не зберігаються в якомусь конкретному порядку, і немає послідовності порядку послідовності сторінок даних. Сторінки даних не пов'язані у пов'язаному списку. "
Heaps - Оптимізація SQL Server :
"Таблиця купи за визначенням - це таблиця, яка не має кластеризованих індексів. Різні сторінки таблиці на основі купи займають різні непомітні області на диску, і вони ніяк не пов'язані між собою."
На відміну від - Структуровані структури індексів : "У SQL Server індекси організовані як B-дерева. Кожна сторінка індексу B-дерева називається індексним вузлом. Верхній вузол B-дерева називається кореневим вузлом. нижній рівень вузлів в індексі називається листковими вузлами. Будь-які рівні індексу між коренем і листковими вузлами спільно називають проміжними рівнями. У кластерному індексі вузли листків містять сторінки даних нижньої таблиці . Корінь та вузли проміжного рівня містять сторінки індексу, що містять рядки індексу. Кожен рядок індексу містить ключове значення та вказівник на сторінку проміжного рівня в B-дереві, або рядок даних на рівні аркуша індексу. Сторінки на кожному рівні індекс пов'язаний у подвійному зв’язку списку. "
Інші посилання:
Індекс означає, що є рядки даних для рядків. Зважаючи на те, що купа не створена для такого замовлення і не підтримує також порядок, це лише метод зберігання даних таблиці.
Є кілька прикладів (скажімо, dm_db_index_physical_stats ), де вказати купу, потрібно ввести ідентифікаційний номер 0. Хоча це, здається, суперечить тому, що я щойно сказав, я думаю, що це просто магічне значення для спрощення API та його використання; нічого більше.
Структура таблиці без кластерного індексу.