Что такое CTE (Common Table Expression)?

Middle
757 просмотров
AFK Offer AI

CTE — это именованный подзапрос, который объявляется через WITH и делает сложные запросы читаемыми. Вместо вложенных подзапросов на три экрана ты выносишь каждый шаг в отдельный блок с понятным именем.

WITH active_users AS (
    SELECT id FROM users WHERE status = 'active'
),
recent_orders AS (
    SELECT user_id, COUNT(*) as cnt
    FROM orders WHERE created_at > NOW() - INTERVAL '7 days'
    GROUP BY user_id
)
SELECT * FROM active_users JOIN recent_orders ON ...

CTE бывают рекурсивными — для деревьев и графов. В PostgreSQL CTE по умолчанию может быть optimization fence (не инлайнится), но начиная с версии 12 планировщик стал умнее.

Следующий вопрос

Как работает gRPC streaming?