Sql 以调试友好的方式重写/重新格式化多个嵌套子查询
有没有更好的方法来重写多个嵌套子查询,以便更容易理解和调试,而不会影响性能 注意:在我的例子中,我得到了一堆相当复杂的子查询,许多子查询具有多个连接、where子句和一些GET case语句等。将所有内容作为一大块代码编写是调试的噩梦 例如:我想重写以下内容:Sql 以调试友好的方式重写/重新格式化多个嵌套子查询,sql,sql-server,tsql,correlated-subquery,Sql,Sql Server,Tsql,Correlated Subquery,有没有更好的方法来重写多个嵌套子查询,以便更容易理解和调试,而不会影响性能 注意:在我的例子中,我得到了一堆相当复杂的子查询,许多子查询具有多个连接、where子句和一些GET case语句等。将所有内容作为一大块代码编写是调试的噩梦 例如:我想重写以下内容: SELECT DoSomething(x) AS x FROM (SELECT DoSomething(x) AS x FROM (SELECT DoSomething(x) AS x FROM (SE
SELECT DoSomething(x) AS x
FROM (SELECT DoSomething(x) AS x
FROM (SELECT DoSomething(x) AS x
FROM (SELECT DoSomething(x) AS x
FROM (SELECT DoSomething(x) AS x
FROM (SELECT x
FROM tbl_1) AS Q1) AS Q2) AS Q3) AS Q4) AS Q5
变成这样:
--Q1
SELECT *
INTO #Q1
FROM (SELECT x
FROM tbl_1) AS Q1
--Q2
SELECT *
INTO #Q2
FROM (SELECT DoSomething(x)
FROM Q1) AS Q2
--Q3
SELECT *
INTO #Q3
FROM (SELECT DoSomething(x)
FROM Q2) AS Q3
--Q4
SELECT *
INTO #Q4
FROM (SELECT DoSomething(x)
FROM Q3) AS Q3
--Q5
SELECT *
INTO #Q5
FROM (SELECT DoSomething(x)
FROM Q4) AS Q4
--Do Something with Q5 then cleanup
DROP TABLE #Q1
DROP TABLE #Q2
DROP TABLE #Q3
DROP TABLE #Q4
DROP TABLE #Q5
上面的示例虽然有更多的代码,但希望调试器能够更轻松地查看/选择单个子查询,并帮助他/她缩小潜在问题的范围 您可以这样编写示例:
WITH
Q1
AS
(
SELECT x
FROM tbl_1
),
Q2
AS
SELECT DoSomething(x)
FROM Q1
),
Q3
AS
(
SELECT DoSomething(x)
FROM Q2
),
Q4
AS
(
SELECT DoSomething(x)
FROM Q3
),
Q5
AS
(
SELECT DoSomething(x)
FROM Q4
)
SELECT *
FROM Q5;
请提供示例数据和预期结果。您可以使用CTE而不是临时表。类似于选择MyCTE01的内容。。。从tbl_1中,选择MyCTE02作为。。。从MyCTE01中,选择MyCTE03作为。。。从MyCTE02。。。选择从MyCTE ops。。。sticky bit已将其发布为answerUse comments,以询问更多信息或提出改进建议。避免在评论中回答问题