我比较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