Sobes.tech
Назад к вопросам
Senior
2

Как настроить нужный индекс? Что смотреть в EXPLAIN? Как понять, что индекс не используется?

Компании, где спрашивали
I-teco

Ответ от нейросети

sobes.tech AI

Чтобы настроить нужный индекс, нужно:

  1. Определить, по каким столбцам часто выполняются фильтры, сортировки или соединения.
  2. Создать индекс на эти столбцы, учитывая порядок и тип индекса (например, B-tree).

При анализе запроса с помощью EXPLAIN смотрят:

  • Используется ли индекс (в поле типа "key" или "Index Scan").
  • Какой именно индекс выбран.
  • Количество строк, которые планируется прочитать (rows).
  • Тип доступа (например, "index scan", "seq scan" — последовательное сканирование).

Если в EXPLAIN видно, что используется "seq scan" (последовательное сканирование), а не индексный доступ, значит индекс не используется.

Причины неиспользования индекса:

  • Запрос не соответствует структуре индекса (например, фильтр по неиндексированному столбцу).
  • Статистика устарела — нужно обновить статистику таблицы.
  • Оптимизатор считает, что последовательное сканирование быстрее (например, при большом объеме данных).

Пример создания индекса в PostgreSQL:

CREATE INDEX idx_users_email ON users(email);

Проверка плана:

EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';

Если в выводе есть Index Scan using idx_users_email, значит индекс используется.