Різниця між Clustered і некластерний індекс

Ключова різниця між Clustered і Non-clustered Index

  • Кластерний індекс — це тип індексу, який сортує рядки даних у таблиці за їхніми ключовими значеннями, тоді як некластеризований індекс зберігає дані в одному місці, а індекси — в іншому.
  • Clustered index зберігає сторінки даних у кінцевих вузлах індексу, тоді як метод некластерного індексу ніколи не зберігає сторінки даних у кінцевих вузлах індексу.
  • Для кластерного індексу не потрібен додатковий дисковий простір, тоді як для некластерного індексу потрібен додатковий дисковий простір.
  • Cluster індекс пропонує швидший доступ до даних, з іншого боку, некластеризований індекс повільніший.
Різниця між Clustered і Non-clustered Index
Clustered проти некластерного індексу

Що таке індекс?

Індекс — це ключ, побудований з одного або кількох стовпців у базі даних, який прискорює отримання рядків із таблиці чи подання. Цей ключ допомагає базі даних лайкнути Oracle, SQL Server, MySQLтощо, щоб швидко знайти рядок, пов’язаний із значеннями ключа.

Є два типи індексів:

  • Clusterред Індекс
  • Не-Clusterред Індекс

Що таке? Clusterред індекс?

Cluster index — це тип індексу, який сортує рядки даних у таблиці за їхніми значеннями ключа. У базі даних існує лише один кластерний індекс на таблицю.

Кластерний індекс визначає порядок, у якому дані зберігаються в таблиці, яку можна сортувати лише одним способом. Отже, для кожної таблиці може бути лише один кластерний індекс. Зазвичай у RDBMS первинний ключ дозволяє створити кластерний індекс на основі цього конкретного стовпця.

Що таке некластерний індекс?

Некластерний індекс зберігає дані в одному місці, а індекси – в іншому. Індекс містить покажчики на розташування цих даних. Одна таблиця може мати багато некластеризованих індексів, оскільки індекс у некластеризованому індексі зберігається в різних місцях.

Наприклад, книга може мати більше одного індексу, один на початку, який відображає вміст книжкової одиниці, а другий індекс показує індекс термінів в алфавітному порядку.
Некластерний індекс визначається в невпорядкованому полі таблиці. Цей тип методу індексування допомагає покращити продуктивність запитів, які використовують ключі, які не призначені як первинні. Некластеризований індекс дозволяє додати унікальний ключ для таблиці.

Характерно для Clusterред Індекс

  • Сховище даних за замовчуванням і сортування
  • Використовуйте лише один або більше стовпців для індексу
  • Допомагає зберігати дані та індексувати разом
  • Фрагментація
  • Operaвих
  • Clustered сканування індексу та пошук індексу
  • Пошук по ключу

Характеристики некластеризованих індексів

  • Зберігати лише ключові значення
  • Покажчики на купу/Clusterред Індексні рядки
  • Дозволяє доступ до вторинних даних
  • Міст до даних
  • Operaфункції сканування індексу та пошуку індексу
  • Ви можете створити некластерний індекс для таблиці або подання
  • Кожен рядок індексу в некластеризованому індексі зберігає значення некластеризованого ключа та локатор рядка

Clustered проти некластерного індексу в SQL: ключові відмінності

параметри Clustered Негрупований
Використовувати для Ви можете сортувати записи та фізично зберігати кластерний індекс у пам’яті відповідно до порядку. Некластеризований індекс допомагає створити логічний порядок для рядків даних і використовує покажчики для файлів фізичних даних.
Спосіб зберігання Дозволяє зберігати сторінки даних у листових вузлах індексу. Цей метод індексування ніколи не зберігає сторінки даних у листових вузлах індексу.
Розмір Розмір кластерного індексу досить великий. Розмір некластерного індексу невеликий порівняно з кластерним індексом.
Доступ до даних Швидше Повільніше порівняно з кластерним індексом
Додатковий дисковий простір Не вимагається Необхідно зберігати індекс окремо
Тип ключа За замовчуванням первинними ключами таблиці є a Clusterред Індекс. Його можна використовувати з унікальним обмеженням для таблиці, яка діє як складений ключ.
Основна особливість Кластерний індекс може покращити продуктивність пошуку даних. Його слід створити на стовпцях, які використовуються в об’єднаннях.

Приклад кластерного індексу

У наведеному нижче прикладі SalesOrderDetailID є кластерним індексом. Зразок запиту для отримання даних

SELECT CarrierTrackingNumber, UnitPrice
FROM SalesData
WHERE SalesOrderDetailID = 6

Приклад кластерного індексу

Приклад некластерного індексу

У наведеному нижче прикладі некластеризований індекс створюється для OrderQty та ProductID наступним чином

CREATE INDEX myIndex ON
SalesData (ProductID, OrderQty)

Приклад некластерного індексу

Наступний запит буде отримано швидше порівняно з кластерним індексом.

SELECT Product ID, OrderQty
FROM SalesData
WHERE ProductID = 714

Приклад некластерного індексу

Переваги Clusterред Індекс

Плюси/переваги кластерного індексу:

  • Clustered індекси є ідеальним варіантом для діапазону або групування за запитами типу max, min, count
  • У цьому типі індексу пошук може переходити безпосередньо до певної точки даних, щоб ви могли продовжувати послідовне читання звідти.
  • ClusterМетод індексу ed використовує механізм розташування, щоб знайти запис індексу на початку діапазону.
  • Це ефективний метод для пошуку в діапазоні, коли запитується діапазон значень ключів пошуку.
  • Допомагає мінімізувати перенесення сторінок і збільшити кількість звернень до кешу.

Переваги некластерного індексу

Плюси використання некластерного індексу:

  • Індекс без кластеризації допомагає швидко отримувати дані з таблиці бази даних.
  • Допомагає уникнути накладних витрат, пов’язаних із кластерним індексом
  • Таблиця може мати декілька некластеризованих індексів СУБД. Таким чином, його можна використовувати для створення більш ніж одного індексу.

Недоліки Clusterред Індекс

Ось недоліки/недоліки використання кластерного індексу:

  • Багато вставок у непослідовному порядку
  • Кластерний індекс створює багато постійних розділень сторінок, які включають сторінку даних, а також сторінки індексу.
  • Додаткова робота для SQL для вставок, оновлень і видалень.
  • Кластерному індексу потрібно більше часу для оновлення записів, коли поля в кластерному індексі змінюються.
  • Листові вузли здебільшого містять сторінки даних у кластерному індексі.

Недоліки некластерного індексу

Ось недоліки/недоліки використання некластерного індексу:

  • Некластерний індекс допомагає зберігати дані в логічному порядку, але не дозволяє фізично сортувати рядки даних.
  • Процес пошуку в некластеризованому індексі стає дорогим.
  • Кожного разу, коли ключ кластеризації оновлюється, необхідне відповідне оновлення для некластеризованого індексу, оскільки він зберігає ключ кластеризації.