我目前正在尋找一些方面來優化我們的一些存儲過程,並且我在性能分析中運行了一個存儲過程中的SQL塊,它只是表現非常糟糕。我已經做了一些研究,並且我已經閱讀過,當你沒有獨特的記錄時使用with子句是一個禁忌,所以我想重寫這個,但是我有麻煩。我在想一段時間循環可能是我最好的選擇,爲了達到我之後的結果,但是我無法正確填充數據的層次結構(特別是[level]字段)。這是我想要重寫的SQL塊。任何建議/想法將非常感激。WITH子句性能問題;重寫入While循環?
;WITH RuleChart (
RuleID,
RuleDetailID,
RuleUnitGroupID,
ParentRuleUnitGroupID,
[Level],
IsNextRuleUnitGroupAvailable
) AS (
SELECT
DISTINCT RD.RuleID,
RD.RuleDetailID,
RD.RuleUnitGroupID,
RD.ParentRuleUnitGroupID,
0 AS [Level],
RD.IsNextRuleUnitGroupAvailable
FROM #TtblRuleDetail RD
WHERE
RD.RuleID IN (
SELECT RuleID
FROM #TtblRule
WHERE ResultID IN (
SELECT ResultID
FROM #TtblResultUnit
)
)
AND RD.ParentRuleUnitGroupID IS NULL
UNION ALL
SELECT
RD.RuleID,
RD.RuleDetailID,
RD.RuleUnitGroupID,
RD.ParentRuleUnitGroupID,
[Level] + 1,
RD.IsNextRuleUnitGroupAvailable
FROM
#TtblRuleDetail RD
INNER JOIN RuleChart RC
ON
RD.ParentRuleUnitGroupID = RC.RuleUnitGroupID
AND RD.RuleID=RC.RuleID
)
我格式化了您的代碼。 – plalx 2013-05-14 02:05:36
對不起,謝謝! – user2379852 2013-05-14 02:39:32