Почему ваши SQL-запросы работают медленно: 3 частые ошибки
За годы работы с аналитикой я заметил, что большинство проблем с производительностью SQL вызваны тремя типичными ошибками:
1. Отсутствие индексов на часто используемых полях Пример:
SELECT * FROM transactions WHERE client_id = 12345;
Решение:
CREATE INDEX idx_client_id ON transactions(client_id);
2. Избыточные подзапросы вместо JOIN Плохо:
SELECT (SELECT name FROM clients WHERE id = t.client_id), t.amount FROM transactions t;
Лучше:
SELECT c.name, t.amount FROM transactions t JOIN clients c ON t.client_id = c.id;
3. Выборка лишних данных Плохая практика:
SELECT * FROM huge_table; -- Загружает всё
Оптимально:
SELECT id, date, amount FROM huge_table WHERE date BETWEEN '2025-01-01' AND '2025-01-31';
Бонус: как анализировать проблемные запросы
В PostgreSQL: EXPLAIN ANALYZE SELECT ...;
В MS SQL: SET STATISTICS TIME ON;