Sobes.tech
Back to questions
Middle
1

Когда индекс не будет использоваться при выполнении запроса?

Companies where asked
VKVK

Answer from AI

sobes.tech AI

Индекс не будет использоваться при выполнении запроса в следующих случаях:

  • Функции или операции над индексируемым столбцом: если в условии WHERE используется функция (например, UPPER(column) = 'VALUE'), индекс не применяется, так как значения трансформируются.

  • Неравенства или диапазон: для некоторых типов индексов (например, B-Tree) при использовании неравенств (<>, NOT IN) или сложных условий индекс может не использоваться.

  • Низкая селективность: если индекс покрывает столбец с небольшим количеством уникальных значений, оптимизатор может решить, что полное сканирование таблицы быстрее.

  • Отсутствие статистики или устаревшая статистика: оптимизатор не может правильно оценить эффективность индекса.

  • Использование OR с условиями, не покрываемыми индексом: если часть условия не может использовать индекс, весь индекс может быть проигнорирован.

  • Запросы с выборкой большого процента строк: при выборке большого объёма данных индекс может быть менее эффективен, чем полный скан.

  • Тип индекса не подходит под запрос: например, индекс по одному столбцу не поможет при фильтрации по другому.

Пример:

SELECT * FROM users WHERE LOWER(name) = 'ivan'; -- индекс по name не будет использоваться