Индексы и селективность в БД
Индекс – это отсортированный набор значений. Применяются для уменьшения времени выполнения запроса. Создаются для колонки при условии использования в:
- WHERE;
- ORDER BY;
- Агрегатных функциях(MIN и MAX).
Составной индекс - индекс, который создан по 2+ полям. Работает так же как и обычный индекс, но информация из колонок храниться вместе. Очередность колонок в индексе важна. Обычно колонки, которые используются в условиях WHERE, следует ставить в начало индекса. Колонки из ORDER BY — в конец.
Селективность колонки определяется количеством записей в таблице с одинаковыми значениями. Когда записей с одинаковым значением мало – селективность высокая. Такие колонки необходимо использовать первыми в составных индексах.
В реляционных базах данных для индексов используется двоичное дерево.
Двоичное дерево строится по определенным правилам:
- У каждого узла не более двух детей.
- Любое значение меньше значения узла становится левым ребенком или ребенком левого ребенка.
- Любое значение больше или равное значению узла становится правым ребенком или ребенком правого ребенка.