# 21. Использование индексов для повышения производительности. Виды индексов
TIP
Индекс - это механизм, который направлен на оптимизацию поиска.
Таблица №1
| Табельный | ФИО | Группа |
|---|---|---|
| 308372 | Либченко М. | M32011 |
Таблица №2
| Группа | Образовательная программа |
|---|---|
| M32011 | Программирование |
def Индекс - это метод, который позволяет получить структуру данных, предназначенную для оптимизации поиска.
Как выглядит индекс:
| Ключ | Значение (адрес кортежа в таблице) |
|---|---|
| key | value |
# Варианты индексов
# 1. Первичный индекс
def Первичный индекс - файл упорядочен по первичному ключу, и по нему же построен индекс, так что гарантируется уникальность каждой записи (кортежа)
| Ключ (Табельный номер) | Значение (адрес кортежа в таблице) |
|---|---|
| 308372 | value |
Этот индекс можно переформатировать в какую-нибудь структуру данных, например, красно-чёрное дерево
- Хеш индекс
| Ключ (хеш табельного) | Значение (адрес кортежа в таблице) |
|---|---|
| hashValue | value |
TIP
Для избавления от коллизий делаем ключ огромного размера
# 2. Кластеризованный индекс
def Кластеризованный индекс - файл упорядочен по ключевому или неключевому атрибуту, по которому построен индекс, при этом несколько кортежей (кластер) соответствует одному значению индекса.
| Ключ (хеш от ФИО) | Значение (адрес кортежа в таблице) |
|---|---|
| hashValue | value |
# 3. Вторичный индекс
def Вторичный индекс - индекс, который построен по атрибуту, отличному от того, по которому осуществлено упорядочивание
TIP
Первый вариант
| Ключ (табельный) | Значение (адрес кортежа в таблице) |
|---|---|
| 308372 | value |
При этом у нас сама таблица отсортирована по ФИО.
TIP
Проблема заключается в том, что нам может понадобиться часто балансировать структуры (деревья)
TIP
Второй вариант
| Ключ (табельный) | Коэф сбалансированности | Значение (адрес кортежа в таблице) |
|---|---|---|
| 308372 | balanceValue | value |
# Классы индексов
Плотный- охватывает все записиРазреженный- охватывает только записи, находящиеся в блоке