Кластерний та некластеризований індекс: ключові відмінності на прикладі

Зміст:

Anonim

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

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

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

  • Кластерний індекс
  • Некластерний індекс

У цьому підручнику ви дізнаєтесь:

  • Що таке індекс?
  • Що таке кластерний індекс?
  • Що таке некластеризований індекс?
  • Характеристика кластерного індексу
  • Характеристика некластерних показників
  • Приклад кластерного індексу
  • Приклад некластерного індексу
  • Відмінності між кластерним індексом та некластерним індексом
  • Переваги кластерного індексу
  • Переваги некластерного індексу
  • Недоліки кластерного індексу
  • Недоліки некластерного індексу

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

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

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

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

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

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

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

КЛЮЧОВА РІЗНИЦЯ

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

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

  • Зберігання даних за замовчуванням та сортування
  • Використовуйте лише один або декілька стовпців для індексу
  • Допомагає зберігати Дані та індексувати разом
  • Роздробленість
  • Операції
  • Кластерне сканування індексу та пошук індексу
  • Пошук ключів

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

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

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

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

SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6

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

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

CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)

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

SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714

Відмінності між кластерним індексом та некластерним індексом

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

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

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

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

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

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

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

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

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

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

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

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

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