Индекс по email добавили, а поиск клиента остался медленным
Пользователи жалуются: поиск клиента по почте в админке работает долго. Разработчик добавил индекс на колонку email таблицы clients (в таблице 4 млн строк), но время ответа не изменилось.
Вы смотрите план запроса:
EXPLAIN ANALYZE
SELECT id FROM clients WHERE lower(email) = 'ivanov@mail.ru';
-- Seq Scan on clients (cost=0.00..91240.00 rows=1 width=8)
-- Filter: (lower(email) = 'ivanov@mail.ru'::text)
Почему индекс не помог?
- Индекс ещё не построился до конца, нужно дождаться завершения перестроения и повторить замер
- Планировщик ожидает одну строку и поэтому выбрал полный просмотр, с индексом результат был бы таким же
- Индексы не применяются к текстовым колонкам, ускорить поиск можно только по числовым полям
- Условие применяет функцию к колонке, поэтому индекс по самой колонке для него не подходит
