比较两个查询的平均执行时间

时间:2018-03-30 14:48:43

标签: postgresql

有没有办法比较两个查询的平均执行时间?

主要目标是在一个特定的背景下知道哪一个更快。

我知道我可以运行两次或更多然后比较(但这还不够),或运行解释(因为它更好理解,但我只是想观察)。

所以,我的问题是:我可以通过比较平均执行时间来衡量它吗?就像在任何事情的基准测试中一样:它会运行很多时间,然后返回平均值。我知道这取决于机器和postgreSQL的版本。我不想使用编程语言来做到这一点,因为它可能会扭曲结果。

可以考虑广泛;如果您需要更多信息,我可以进行编辑!

1 个答案:

答案 0 :(得分:1)

我经常使用这样的东西来检查某些内容的性能:

DO $$
DECLARE
    start   TIMESTAMP;
    end     TIMESTAMP;
BEGIN
    start := clock_timestamp();
    FOR i IN 1..100000 LOOP
        PERFORM --...
    END LOOP;
    end := clock_timestamp();
    RAISE NOTICE '%', end - start;
END $$

虽然您需要注意PG可能会做出的优化 - 例如,缓存稳定或不可变函数的结果 - 并防范它以确保您的测试符合您的预期。