Индекс ускоряет поиск данных. Без него база данных сканирует каждую строку в поисках совпадающих записей. С индексом она переходит непосредственно к нужным строкам. Индекс — это отдельная структура данных, которая сопоставляет значения с местоположениями. Книжный указатель работает аналогично. Вы ищете термин и находите номер страницы. Вам не нужно читать каждую страницу, чтобы его найти. База данных делает то же самое.
Индексы имеют свою цену. Они занимают место. Они замедляют операции вставки, обновления и удаления, поскольку индекс также должен обновляться. Каждая операция записи становится дороже. Преимуществом является более быстрое чтение. Для рабочих нагрузок с интенсивным чтением индексы необходимы. Для рабочих нагрузок с интенсивным записью слишком большое количество индексов снижает производительность. Выбор столбцов для индексации требует понимания шаблонов запросов. Столбцы, используемые в предложениях WHERE, условиях JOIN и предложениях ORDER BY, являются хорошими кандидатами. Столбцы с низкой кардинальностью, такие как логический флаг, являются плохими кандидатами, поскольку индекс не сильно сужает область поиска. Составные индексы охватывают несколько столбцов и могут обслуживать запросы, фильтрующие по нескольким полям. Порядок столбцов в составном индексе имеет значение. База данных может использовать составной индекс для запросов по ведущему столбцу, но не только по последующим столбцам. Проектирование индекса — это компромисс. Цель состоит в том, чтобы ускорить важные запросы, не замедляя при этом операции записи больше, чем необходимо.
Типы индексов
- B-дерево — используется по умолчанию в большинстве баз данных, хорошо подходит для запросов диапазона.
- Хэш — быстрый поиск равенства, без поддержки диапазонов.
- Битовая карта — столбцы с низкой кардинальностью, аналитические запросы.
- Полнотекстовый поиск — поиск по тексту
- Составной индекс — несколько столбцов в одном индексе.
Индекс — это своего рода ярлык. Он жертвует скоростью записи и объемом памяти ради скорости чтения. Используйте его там, где скорость чтения наиболее важна.
Comments (3)
Leave a comment