Вступить в клуб →
лёгкаявопросPostgreSQL, ORM и оптимизация запросов

Поиск по email в таблице на 5 млн строк занимает две секунды

Запрос авторизации выполняется около двух секунд:

SELECT id, name FROM users WHERE email = 'ivan@example.com';

В таблице 5 млн строк. План выполнения показывает Seq Scan по users. Индексов на колонке email нет.

Что происходит и что делать?

  • База последовательно читает всю таблицу; индекс по email превратит это в точечный поиск
  • Нужно добавить LIMIT 1: база остановится на первом совпадении, и запрос ускорится
  • Дело в настройках памяти: увеличение work_mem уберёт последовательное чтение таблицы
  • Виновата ORM — тот же самый запрос через raw SQL выполнится в разы быстрее

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

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

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

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