Есть ли лучший способ переписать несколько вложенных подзапросов, чтобы их было легче понять и отладить без снижения производительности?
(Примечание: в моем случае я получил несколько довольно сложных подзапросов, многие с несколькими объединениями, где предложение, некоторые операторы case и т. Д. Запись всего в виде одного большого блока кода является кошмаром отладки)
Например: я хочу переписать это:
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
Пример выше, хотя гораздо больше кода (надеюсь) позволит отладчику более легко просматривать / выбирать отдельные подзапросы и помогает ему / ей разобраться в потенциальных проблемах