Приведи пример самых вероятных оптимизаций в PostgreSQL
Python
Senior
Рамблер
Приведи пример самых вероятных оптимизаций в PostgreSQL
Ответы
- **Индексы** – ускорение поиска по часто используемым полям.
```
CREATE INDEX idx_users_email ON users(email);
```
- **Оптимизация запросов** – избегание `SELECT *`, использование `EXPLAIN ANALYZE` для анализа.
```
EXPLAIN ANALYZE SELECT id FROM users WHERE active = true;
```
- **Партиционирование** – разделение больших таблиц на части (например, по датам).
```
CREATE TABLE logs_2023 PARTITION OF logs FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');
```
- **Настройка `work_mem`** – увеличение памяти для сортировки и агрегации.
```
SET work_mem = '64MB';
```
- **Кэширование (materialized views)** – предрасчет сложных запросов.
```
CREATE MATERIALIZED VIEW monthly_sales AS
SELECT date_trunc('month', sale_date) AS month, SUM(amount) FROM sales GROUP BY month;
```
- **Оптимизация JOIN** – правильный порядок таблиц и использование индексов.
- **VACUUM и ANALYZE** – регулярное обслуживание БД.
```
VACUUM ANALYZE users;
```