Senior
Parle-moi des index dans les bases de données : quels types existent, quand un index est ignoré et la base effectue un scan séquentiel?
sobes.tech IA
Réponse de l'IA
Индексы в базах данных — это структуры данных, которые ускоряют поиск и сортировку по определённым столбцам. Основные типы индексов:
- B-tree — самый распространённый, подходит для точного поиска, диапазонов, сортировки.
- Hash — быстрый для точного равенства, но не поддерживает диапазоны.
- Bitmap — эффективен для столбцов с низкой кардинальностью (например, пол).
- GIN/GiST — для полнотекстового поиска, работы с массивами и сложными типами.
Индекс может быть проигнорирован и выполнен последовательный скан (seq scan) в следующих случаях:
- Если селективность запроса низкая (например, условие возвращает большую часть таблицы), то seq scan может быть быстрее.
- Если статистика устарела или отсутствует, планировщик может выбрать seq scan.
- При использовании функций или выражений, не покрываемых индексом.
- Если индекс не покрывает все нужные столбцы и требуется дополнительное чтение из таблицы.
- При блокировках или проблемах с индексом.
Пример: запрос WHERE age > 10 по индексу на age будет использовать индекс, если таких записей мало, иначе — seq scan.