Sobes.tech
Senior

Wie richtet man den benötigten Index ein? Was sollte man in EXPLAIN beachten? Wie erkennt man, dass der Index nicht verwendet wird?

sobes.tech KI

Antwort von 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, значит индекс используется.