Давайте представим два проекта кода.
Рис. 1:
WITH
cte1 AS (
SELECT a1, a2
FROM A
WHERE a_condition
),
cte2 AS (
SELECT b1, b2
FROM B
WHERE b_condition
)
SELECT
a1, a2, b1, b2
FROM
cte1, cte2
WHERE
cross_condtion
Рис. 2:
WITH
cte_a AS (
SELECT a1, a2
FROM A
),
cte_b AS (
SELECT b1, b2
FROM B
)
SELECT
a1, a2, b1, b2
FROM
cte_a, cte_b
WHERE
a_condition AND
b_condition AND
cross_condtion
Будут ли планы выполнения одинаковыми для таких запросов? Или во втором случае система получит все данные из A, все данные из B и только затем применит фильтры?