У меня есть одна мастер-таблица, которая создается несколькими CTE 'UNION ALL' вместе. Не все созданные CTE используются для создания главной таблицы, а только для создания других CTE, например:
CTE1,
CTE2 (FROM CTE1 LEFT JOIN tblA on CTE1.GroupData = tblA.GroupData),
CTE3,
CTE4,
CTE5 (FROM CT3 LEFT JOIN CTE4 on CT3.id = CT4.id),
SELECT * FROM CTE2
UNION ALL
SELECT * FROM CTE5
Каждый CTE1, CT3 и CTE4 создается из нескольких таблиц в моей базе данных, конечно, каждый CTE1 или CTE3 или CTE4 имеют другой формат, вот пример CTE1:
CTE1 AS(
SELECT a AS 'Col1'
b AS 'Col2'
tbl3.GroupData AS GroupData
FROM tbl1 AS n
LEFT JOIN tbl2 AS m ON m.m_id = n.n_id
LEFT JOIN tbl3 AS o ON o.o_id = m.m_id
WHERE m.is_active = 1
AND 'PROD1' = (SELECT...)
)
...
Простой способ обновить главную таблицу, если есть какие-либо изменения в CTE (точнее, изменения в tbl2 или tbl3..v ... v) удалить основную таблицу и запустить сценарий ЗАПРОСЫ - СОЕДИНЕНИЕ ВСЕ. Но поскольку существует сто миллионов строк, такой способ невозможен. Так у кого-нибудь есть решение для этого?