Как можно оптимизировать SQL запрос

Python Senior Без компании
Как можно оптимизировать SQL запрос
Ответы
Оптимизация SQL запросов в Python включает несколько ключевых подходов: - **Индексы** – добавьте индексы на часто используемые столбцы в условиях WHERE и JOIN: ``` # Пример создания индекса через raw SQL в Django from django.db import connection with connection.cursor() as cursor: cursor.execute("CREATE INDEX idx_name ON users(name)") ``` - **Выборка только нужных полей** – избегайте `SELECT *`: ``` # Django ORM User.objects.only('id', 'name').filter(active=True) ``` - **JOIN вместо подзапросов** – подзапросы часто менее эффективны: ``` # Плохо User.objects.filter(id__in=Order.objects.filter(price__gt=100).values('user_id')) # Лучше User.objects.select_related('orders').filter(orders__price__gt=100) ``` - **Пакетная обработка** – используйте `bulk_create/update` для массовых операций. - **EXPLAIN** – анализируйте план выполнения запроса: ``` with connection.cursor() as cursor: cursor.execute("EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30") print(cursor.fetchall()) ``` - **Кэширование** – кэшируйте результаты частых запросов. - **Лимиты** – добавляйте `LIMIT` к запросам, если нужна только часть данных.