SQL хитрый совет для про 💡
Используй
❌ Как делают обычно:
✅ Как делают профи:
Почему это важно:
- меньше вычислений внутри агрегаций
- оптимизатору проще строить план
- код короче и легче поддерживать
- особенно эффективно в аналитических запросах
Где работает:
- PostgreSQL
- SQLite (частично)
- DuckDB
- ClickHouse (через аналоги)
Мелочь, но именно из таких мелочей складывается SQL уровня senior.
Используй
COUNT(*) FILTER вместо CASE WHEN — быстрее, чище и читаемее.❌ Как делают обычно:
SELECT
COUNT(CASE WHEN status = 'success' THEN 1 END) AS success_cnt,
COUNT(CASE WHEN status = 'error' THEN 1 END) AS error_cnt
FROM events;
✅ Как делают профи:
Копировать код
SELECT
COUNT(*) FILTER (WHERE status = 'success') AS success_cnt,
COUNT(*) FILTER (WHERE status = 'error') AS error_cnt
FROM events;
Почему это важно:
- меньше вычислений внутри агрегаций
- оптимизатору проще строить план
- код короче и легче поддерживать
- особенно эффективно в аналитических запросах
Где работает:
- PostgreSQL
- SQLite (частично)
- DuckDB
- ClickHouse (через аналоги)
Мелочь, но именно из таких мелочей складывается SQL уровня senior.
👍9❤2