我比較PostgreSQL 8.3.14上的查詢返回相同的結果集。如何準確測量查詢的效率?
我在查詢中使用了EXPLAIN
來跟蹤估計的總成本。我也運行了幾次查詢並記錄了運行所花費的總時間。我知道連續運行會導致更多的數據被緩存,並扭曲實際的no-cache運行時。
我仍然認爲EXPLAIN
的成本與總體運行時間有一定的比例(帶有緩存偏移)。
我的數據否認這一點。我比較了4個查詢。
- 查詢
- 總成本:119 500
- 平均運行時間:28.101秒
- 查詢乙
- 總成本:115 700
- 平均運行時間: 28.291秒
- 查詢Ç
- 總成本:116 200
- 平均運行時間:32.409秒
- 查詢d
- 總成本:93 200
- 平均運行時間:37.503秒
我最後運行了查詢D,如果有什麼,它應該是最快的,因爲緩存問題。由於運行查詢,而不緩存似乎在此基礎上Q + A到困難:
[SO]:See and clear Postgres caches/buffers?
如何衡量它的查詢是最有效的?
文檔說'VACUUM ANALYZE [table]'將更新我包含的所有表的統計信息。在我看來,這會扭曲查詢比較,因爲每次連續運行都會有更好的統計數據。 – 2012-03-05 14:24:50