Вступить в клуб →
сложнаявопросSQL и проверка данных

Индекс по 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)

Почему индекс не помог?

  • Индекс ещё не построился до конца, нужно дождаться завершения перестроения и повторить замер
  • Планировщик ожидает одну строку и поэтому выбрал полный просмотр, с индексом результат был бы таким же
  • Индексы не применяются к текстовым колонкам, ускорить поиск можно только по числовым полям
  • Условие применяет функцию к колонке, поэтому индекс по самой колонке для него не подходит

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела