Встречается на 1% собеседований по Python

Как понять что запросы попадает в индекс

В PostgreSQL можно проверить, используется ли индекс для запроса с помощью EXPLAIN ANALYZE. Если в выводе видно Index Scan или Bitmap Index Scan, значит индекс используется. Пример:

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

Если создан индекс на поле email, в выводе будет что-то вроде:

text
Index Scan using idx_users_email on users  (cost=0.42..8.44 rows=1 width=68)

В Django ORM можно проверить запросы через connection.queries:

python
from django.db import connection
User.objects.filter(email='test@example.com').first()
print(connection.queries[-1]['sql'])

Также полезные инструменты:

  • pg_stat_all_indexes - статистика использования индексов
  • django-debug-toolbar для анализа запросов в веб-интерфейсе

Если индекс не используется, возможные причины:

  1. Низкая селективность (мало уникальных значений)
  2. Несоответствие типов данных
  3. Слишком маленькая таблица (оптимизатор выбирает seq scan)

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы