Что такое плотный индекс (Dense Index)?
Плотный индекс — это техника индексации, при которой каждая запись в базе данных имеет соответствующую запись в индексе. Это означает, что индекс содержит прямую ссылку на каждую строку в таблице.
Характеристики плотного индекса:
- Однозначное отображение: Каждая запись в базе данных имеет запись в индексе.
- Быстрые поиски: Поскольку для каждой записи есть запись в индексе, поиски обычно быстрее, чем для разреженных индексов (но за счет большего объема памяти).
- Высокие требования к хранению: Поскольку каждая строка индексируется, плотные индексы требуют больше места для хранения по сравнению с разреженными индексами.
- Эффективен для маленьких таблиц: Хорошо работает для небольших наборов данных, но может быть неэффективен для очень больших таблиц.
Плотный индекс vs. Разреженный индекс
| Характеристика | Плотный индекс | Разреженный индекс |
|---|---|---|
| Размер хранения | Больше (сохраняет запись для каждой записи) | Меньше (сохраняет меньше записей, обычно для каждого блока или страницы) |
| Скорость поиска | Быстрее (прямой доступ к любой записи) | Медленнее (необходим дополнительный поиск внутри блока/страницы) |
| Стоимость обновлений | Выше (каждое вставление/обновление затрагивает индекс) | Ниже (нужно обновить меньше записей индекса) |
| Лучший случай использования | Малые и средние таблицы | Большие наборы данных с упорядоченными ключами |
Визуальный пример плотного индекса
Рассмотрим простую таблицу:
| ID | Имя | Возраст |
|---|---|---|
| 1 | Alice | 28 |
| 2 | Bob | 32 |
| 3 | Charlie | 25 |
| 4 | David | 40 |
Плотный индекс для столбца ID будет выглядеть так:
| Индекс (ID) | Указатель на запись |
|---|---|
| 1 | → Запись Alice |
| 2 | → Запись Bob |
| 3 | → Запись Charlie |
| 4 | → Запись David |
В то время как разреженный индекс может хранить только выбранные записи, например:
| Индекс (ID) | Указатель на запись |
|---|---|
| 1 | → Запись Alice |
| 3 | → Запись Charlie |
Разреженный индекс потребует дополнительного шага для поиска Bob и David, так как нужно будет выполнить поиск внутри индексированных блоков.