2012-03-11 41 views
0

鑑於一個醜陋的,可能長,效率低,冗餘和複雜的查詢,有沒有一種工具可以簡化目標數據庫?如果不是,由於數據庫無論如何優化查詢,是否有可能看到數據庫將使用的優化查詢?我對實際查詢計劃不感興趣,而是對優化和/或簡化查詢感興趣。那可能嗎?我對任何這些數據庫的答案感興趣:MySQL,SQL Server,Postgres,SQLite。可能查看數據庫的簡化或優化SQL查詢嗎?

+0

按照設計,SQL表示查詢的邏輯,而不管任何查詢計劃可能用於執行它。因此,儘管存在簡化查詢這樣的事情,但對於第一次近似,並不存在像「優化」SQL查詢那樣的事情。當然,在實踐中,大多數數據庫允許你使用像USE INDEX這樣的強制子句,但這通常是最好的避免,因爲它可以防止數據庫適應不斷變化的數據配置文件。 – GSnyder 2012-03-11 01:58:20

回答

1

因爲數據庫反正優化查詢...

PostgreSQL的優化查詢計劃,但幾乎沒有轉化爲相應的SQL查詢。這不是重新編寫的SQL代碼本身。因此,,除非您對查詢計劃程序的內部工作有深入的瞭解,否則無法從優化的查詢計劃派生優化的SQL查詢。

通過查看EXPLAIN ANALYZE的輸出,您可以瞭解是使用索引還是查詢計劃程序選擇表掃描以及其他有用的詳細信息。

+1

相同的答案適用於MySQL。您可以看到帶有EXPLAIN EXTENDED的查詢計劃,但它是以表格形式,需要一些知識來解釋而不是以查詢的形式。 – GSnyder 2012-03-11 01:51:44