Back to questions
Senior
3
Как настроить нужный индекс? Что смотреть в EXPLAIN? Как понять, что индекс не используется?
Companies where asked
I-teco
Answer from AI
sobes.tech AI
Чтобы настроить нужный индекс, нужно:
- Определить, по каким столбцам часто выполняются фильтры, сортировки или соединения.
- Создать индекс на эти столбцы, учитывая порядок и тип индекса (например, 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, значит индекс используется.