Db2
有什麼方法可以跟踪優化器在 DB2 中的工作嗎?
就像 SQL Server 中的 MEMO 結構,它是優化器在優化查詢時採取的步驟的“書面記錄”,DB2 中是否有任何東西可以讓我獲得資訊,例如優化器考慮的計劃、成本每個計劃?
我不知道如何跟踪優化器考慮的所有計劃。顯然,該
EXPLAIN
語句為您提供了優化器最終選擇的計劃(以及重新編寫的語句),但這並沒有告訴您有關它沒有選擇的計劃的任何資訊。獲取更多資訊的一種方法可能是設置
CURRENT QUERY OPTIMIZATION
為不同的值(預設值為 5),EXPLAIN
在語句上執行,然後將其設置回預設值 (5) 並EXPLAIN
再次執行。如果您使用其他優化級別獲得不同的計劃,這可能會提供關於 DB2 在優化您的語句時採用的路徑的線索(當然,如果您獲得相同的計劃,它不會告訴您任何事情!)。我懷疑查詢越簡單,您就越有可能發現沒有區別(因此相反,這種技術對於更複雜的語句會更好地工作)。