由于我要编写带有许多联合alls,内连接的复杂查询,为了清楚起见,我想选择代码的最佳结构。这是两个导致相同结果的查询。惯例是什么?您是否建议使用嵌套的SELECT或WITH语句或INSERT INTO临时表?你能指导我任何出版物如何使用TAB,括号等。
首次质询
WITH BigPictureQuery AS
(
SELECT BottomLevelQuery FROM TabA AS a
)
SELECT Something FROM BigPictureQuery
第二次查询
SELECT Something FROM
(
SELECT BottomLevelQuery
FROM TabA AS a
)
AS BigPictureQuery
答案 0 :(得分:1)
使用非递归CTE
我在subquery
上找到的优势是,referred
范围内的CTE
可以更多CTE
。
它也比子查询更具可读性。性能方面两种方法都是相似的。
例如:WITH BigPictureQuery AS
(
SELECT BottomLevelQuery FROM TabA AS a
)
SELECT Something FROM BigPictureQuery A
join BigPictureQuery B on a.Something =b.Something
join BigPictureQuery C on a.Something =C.Something
..
subselect
使用SELECT Something FROM
(
SELECT BottomLevelQuery
FROM TabA
)
AS A
join
(
SELECT BottomLevelQuery
FROM TabA
)
AS A on a.BottomLevelQuery =b.BottomLevelQuery
join
(
SELECT BottomLevelQuery
FROM TabA
)
AS C on a.BottomLevelQuery =C.BottomLevelQuery
...
执行同样的操作,查询将类似于
CTE
显然{{1}}在这里更具可读性