Как понять что запросы попадает в индекс
Python
Middle
Без компании
Как понять что запросы попадает в индекс
Ответы
В PostgreSQL можно проверить, используется ли индекс для запроса с помощью `EXPLAIN ANALYZE`. Если в выводе видно `Index Scan` или `Bitmap Index Scan`, значит индекс используется. Пример:
```
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';
```
Если создан индекс на поле `email`, в выводе будет что-то вроде:
```
Index Scan using idx_users_email on users (cost=0.42..8.44 rows=1 width=68)
```
В Django ORM можно проверить запросы через `connection.queries`:
```
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` для анализа запросов в веб-интерфейсе
Если индекс не используется, возможные причины:
- Низкая селективность (мало уникальных значений)
- Несоответствие типов данных
- Слишком маленькая таблица (оптимизатор выбирает seq scan)