試圖瞭解EXPLAIN功能 - 我有兩個疑問 - 第一個查詢優化,運行600毫秒(我有10萬行)和第二查詢正在運行900毫秒 但是當我運行EXPLAIN ANALYZE - 第一個查詢,即快速運行,顯示成本 - 64296,第二個查詢,即運行速度慢,顯示成本 - 20873 無法理解爲什麼更快的查詢成本更高,以及爲什麼運行時間更長的查詢成本更低。 有人可以給我一些提示嗎?瞭解EXPLAIN功能在PostgreSQL
0
A
回答
0
PostgreSQL EXPLAIN
是一種真正擁有大量武器的動物腿,每一條腿都可能導致其起初不易理解的方式工作。
要回答你的問題,據我瞭解,雖然運行第一個查詢Q1(而不是它EXPLAIN
),它的運行速度比第二(Q2)更快,但是當你做一個EXPLAIN ANALYSE
,Q1實際上具有較高的性價比。
我能想到的,都在這一刻我想起兩個原因:
- 如果查詢是
LIMIT
查詢,其可能的Q1執行速度更快,而且還有較高的「成本」,因爲PostgreSQL規劃(有意)並不計劃較小的總成本,而是所需結果的較小成本(在這種情況下,行數較少)。 - 另一個原因可能是緩存可能會破壞你的時代。你能否確認觀察是否持續多次(3+)運行?
0
成本就是計劃者認爲執行查詢需要多少資源(I/O和CPU時間)。這只是一個估算,通過數學模型計算。
在你的案件策劃師錯了,它選擇了不理想的計劃。它有時會發生。
爲什麼?可能有很多原因。也許統計數據不足(首先嚐試運行analyze
)。也許統計數據是可以的,但規劃人員使用錯誤的模型(例如,您可能在查詢中存在已知有問題的相關謂詞)。也許你的查詢是在幾十張桌子上,規劃者不能完成所有可能的計劃。等等。
相關問題
- 1. 瞭解簡單的PostgreSQL的EXPLAIN
- 2. 解析PostgreSQL中EXPLAIN命令的輸出
- 3. 瞭解功能
- 4. 瞭解功能
- 5. 瞭解查詢中的COUNT行爲與EXPLAIN與功能的比較
- 6. 瞭解iterator.next功能
- 7. 瞭解maxmin功能
- 8. Javascript瞭解功能
- 9. Javascript瞭解功能
- 10. Javascript功能瞭解
- 11. 瞭解MySQL中EXPLAIN的結果
- 12. 的PostgreSQL在功能
- 13. 功能在PostgreSQL中
- 14. 阿克曼功能瞭解
- 15. 瞭解C++ 0x功能
- 16. tipr.js瞭解每個功能
- 17. 瞭解撰寫功能
- 18. 瞭解Twilio的功能。
- 19. 瞭解功能。 PCAP和BPF
- 20. 瞭解JavaScript關閉功能
- 21. 瞭解TSQL合併功能
- 22. 安卓:瞭解功能remapCoordinateSystem
- 23. 瞭解Virto功能流程
- 24. 幫助瞭解功能
- 25. 瞭解如何transaction.complete功能?
- 26. 瞭解輪廓功能
- 27. 瞭解新的iOs功能?
- 28. 瞭解功能和undefined
- 29. 瞭解此Javascript功能
- 30. 瞭解2殼功能
可能是因爲優化器感到困惑,併爲第二個查詢選擇了錯誤的執行計劃。 –