2014-06-06 65 views
0

我目前正在維護大量現有的SQL查詢。有什麼方法可以通過使用執行計劃或任何其他替代方法在SQL查詢中找到不必要的連接。如何在SQL查詢中查找不必要的連接?

在此先感謝

+1

定義「不必要的連接」。你可以給我一個例子嗎? –

+1

我可以想象一個連接的唯一方法是沒有用的是,當您不再在另一個連接或select子句中再次引用它時。我認爲這在實踐中是非常罕見的,除非你首先編寫查詢的人員無能爲力。 –

+1

「是否有任何方法通過使用執行計劃或任何其他替代方法在SQL查詢中查找不必要的聯接。」不需要。假設您不需要,您的意思是表中的字段不會顯示,也不會包含在where子句,order或group by中。連接仍然可以有效限制...或爆炸結果(例如在交叉連接中) – xQbert

回答

1

不幸的是,沒有什麼魔術工具可以清理你的數據庫,並列出一些可能是「不必要」的東西。拉胡爾的回答指出你在正確的方向,查看查詢並將它們與ERD和規範進行比較。

執行計劃可以幫助您確定某個特定查詢是否執行得不好,並且可能是原因是不必要的連接,但它也可以是其他任何操作。最後,它涉及到了解數據庫,瞭解數據以及如何使用數據。

1

如果您有與business requirement specification對上述查詢沿着ERD(實體關係圖)代替;然後通過查看ERD和SPEC;我相信你至少可以得到一個想法,如果有任何聯繫不是(可能不是)必要的任何關係。