Как оптимизировать сложные запрос в БД
Python
Senior
Без компании
Как оптимизировать сложные запрос в БД
Ответы
Для оптимизации тяжелых SQL-запросов в Python:
- **Индексы** - убедитесь, что запрос использует индексы по условиям WHERE и JOIN
```
# Создание индекса
cursor.execute("CREATE INDEX idx_name ON users(name)")
```
- **Лимиты и пагинация** - не загружайте все данные сразу
```
# Пагинация
cursor.execute("SELECT * FROM large_table LIMIT 100 OFFSET 200")
```
- **Оптимизация SELECT** - выбирайте только нужные поля
```
# Вместо SELECT *
cursor.execute("SELECT id, name FROM users WHERE active = 1")
```
- **Кэширование** - используйте Redis/Memcached для часто запрашиваемых данных
- **EXPLAIN** - анализируйте план выполнения запроса
```
cursor.execute("EXPLAIN ANALYZE SELECT * FROM users")
print(cursor.fetchall())
```
- **Батчинг** - для массовых операций используйте batch-вставки
```
data = [(1, 'John'), (2, 'Alice')]
cursor.executemany("INSERT INTO users VALUES (?, ?)", data)
```
- **ORM оптимизация** - для Django/SQLAlchemy используйте:
- select_related/prefetch_related
- only/defer
- bulk_create