Що таке індекс?
Індекс - це ключ, побудований з одного або декількох стовпців бази даних, що прискорює отримання рядків з таблиці або подання. Цей ключ допомагає такій базі даних, як 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 для вставки, оновлення та видалення.
- Кластерний індекс займає більше часу для оновлення записів, коли поля в кластерному індексі змінюються.
- Листові вузли здебільшого містять сторінки даних у кластерному індексі.
Недоліки некластерного індексу
Ось мінуси / недоліки використання некластеризованого індексу:
- Некластеризований індекс допомагає зберігати дані в логічному порядку, але не дозволяє фізично сортувати рядки даних.
- Процес пошуку за некластеризованим індексом стає дорогим.
- Щоразу, коли ключ кластеризації оновлюється, необхідне відповідне оновлення некластеризованого індексу, оскільки він зберігає ключ кластеризації.