Индексиране в СУБД: Какво е, Видове индекси с ПРИМЕРИ
⚡ Умно обобщение
Индексирането в базата данни е техника за структуриране на данни, която бързо извлича записи чрез картаping ключ за търсене на адреса на диска на неговия запис. Първичните, вторичните, клъстерните, многостепенните и B-дървото индексират всяко пространство за търговия, скорост и поддръжка по различен начин.

Какво е индексиране?
Индексирането е техника за структуриране на данни, която ви позволява бързо да извличате записи от файл на база данни. Индексът е малка таблица, имаща само две колони. Първата колона съдържа копие на първичния или кандидат-ключ на таблица. Втората му колона съдържа набор от указатели съхраняващ адреса на дисковия блок, където се съхранява тази специфична ключова стойност.
Индекс:
- Приема ключ за търсене като вход.
- Ефективно връща колекция от съвпадащи записи.
Без индекс, базата данни трябва да сканира всеки ред, за да отговори на заявка. С такъв, тя преминава директно към съответстващия блок, поради което избраният тип индекс има голямо влияние върху производителността.
Видове индексиране в СУБД

Индексирането в база данни се определя въз основа на нейните атрибути за индексиране. Двата основни типа методи за индексиране са:
- Първично индексиране
- Вторично индексиране
Първичен индекс в СУБД
Първичният индекс е подреден файл с фиксирана дължина и две полета. Първото поле е същото като първичния ключ, а второто поле сочи към този специфичен блок данни. В първичния индекс винаги има връзка „един към един“ между записите в индексната таблица.
Основният индекс също е допълнително разделен на два вида:
- Плътен индекс
- Разреден индекс
Плътен индекс
В плътен индекс се създава запис за всяка стойност на ключ за търсене в базата данни. Това ви помага да търсите по-бързо, но изисква повече място за съхранение на индексни записи. При този метод записите съдържат стойността на ключа за търсене и сочат към реалния запис на диска.
Разреден индекс
Разреденият индекс е индексен запис, който се появява само за някои от стойностите във файла. Разреденият индекс ви помага да разрешите проблемите с плътното индексиране в СУБДПри тази техника, набор от индексни колони съхраняват един и същ адрес на блок от данни и когато е необходимо да се извлекат данни, този адрес на блок се извлича.
Разреденият индекс съхранява индексни записи само за някои стойности на ключове за търсене. Той изисква по-малко място и по-малко разходи за поддръжка за вмъквания и изтривания, но е по-бавен от плътния индекс за намиране на записи.
По-долу е даден пример за разреден индекс в база данни.
Плътен индекс срещу разреден индекс
Двата основни варианта на индекса правят противоположни компромиси, обобщени по-долу.
| Аспект | Плътен индекс | Разреден индекс |
|---|---|---|
| Записи | По един на ключ за търсене | По един на блок |
| Космос | Повече | Less |
| Скорост на търсене | По-бързо | По-бавно |
| поддръжка | По-висок | Спуснете |
Вторичен индекс в СУБД
Вторичният индекс в СУБД може да бъде генериран от поле, което има уникална стойност за всеки запис и трябва да бъде кандидат-ключ. Известен е още като неклъстерен индекс.
Тази техника за индексиране на база данни на две нива се използва за намаляване на картатаping размер на първото ниво. За първото ниво е избран голям диапазон от числа, така че картатаping размерът винаги остава малък.
Пример за вторичен индекс
Нека разберем вторичното индексиране с пример за индексиране на база данни. В база данни за банкови сметки данните се съхраняват последователно по acc_no, но може да искате да намерите всички сметки в конкретен клон на банка ABC.
Тук можете да имате вторичен индекс за всеки ключ за търсене. Индексният запис сочи към контейнер, който съдържа указатели към всички записи с тази конкретна стойност на ключа за търсене.
Clustering Index в СУБД
В клъстерен индекс самите записи се съхраняват в индекса, а не указателите. Понякога индексът се създава върху колони, които не са първични ключове, което може да не е уникално за всеки запис. В такава ситуация можете да групирате две или повече колони, за да получите уникални стойности и да създадете индекс, който се нарича клъстерен индекс. Това също ви помага да идентифицирате записа по-бързо.
Пример: Да предположим, че една компания е наела много служители в различни отдели. В този случай трябва да се създаде индекс за клъстериране за всички служители, които принадлежат към един и същ отдел.
Те се разглеждат като един клъстер, а индексът сочи към клъстера като цяло. Тук Department_no е неуникален ключ.
Какво е многостепенен индекс?
Многостепенното индексиране се създава, когато първичният индекс не се побира в паметта. При този тип метод на индексиране можете да намалите броя на достъпите до диска, за да достигнете до който и да е запис. Записите се съхраняват на диск като последователен файл, а върху този файл се създава разреден индекс.
Индекс на B-дърво
B-дървовидният индекс е най-широко използваната структура от данни за дървовидно индексиране в СУБД. Това е многостепенен формат за дървовидно индексиране, който използва балансирано... двоични дървета за търсенеВсички листни възли на B-дървото съдържат действителните указатели към данни.
Освен това, всички листови възли са взаимосвързани със свързан списък, което позволява на B-дървото да поддържа както произволен, така и последователен достъп.
- Листните възли трябва да имат между 2 и 4 стойности.
- Всеки път от корена до листа е предимно с еднаква дължина.
- Нелистните възли, освен коренния възел, имат между 3 и 5 дъщерни възела.
- Всеки възел, който не е корен или лист, има между n/2 и n деца.
Където доминират търсенията с точно съвпадение и сканирането на диапазони е рядкост, хеширане може да бъде по-бърза алтернатива на индекса тип B-дърво.
Предимства на индексирането
Важните предимства на индексирането са:
- Това помага за намаляване на общия брой входно-изходни операции, необходими за извличане на данни, така че не е необходимо да осъществявате достъп до ред директно от таблицата.
- Той предлага по-бързо търсене и извличане на данни на потребителите.
- Това може да намали табличното пространство, защото не е необходимо да съхранявате ROWID в индекса за всеки свързан ред.
- Данните в крайните възли вече са подредени по стойността на ключа.
Недостатъци на индексирането
Съществените недостатъци на индексирането са:
- За да извършите индексиране, ви е необходим първичен ключ на таблицата с уникална стойност.
- Не можете да изградите друг индекс върху данни, които вече са организирани по същия начин.
- Нямате право да разделяте организирана по индекс таблица.
- Индексирането намалява производителността при заявки INSERT, DELETE и UPDATE.





