我有一个查询从表中选择不同的值,并且我注意到初始执行后执行时间显着减少。
这是我第二次执行查询时得到的查询和相应的执行计划。
EXPLAIN ANALYZE SELECT DISTINCT integration_type FROM my_schema.my_table;
Unique (cost=0.43..576843.69 rows=7 width=2) (actual time=0.032..2826.863 rows=8 loops=1)
-> Index Only Scan using my_index on my_schema.my_table (cost=0.43..538707.38 rows=15254521 width=2) (actual time=0.031..1881.219 rows=14730886 loops=1)
Heap Fetches: 1381786
Planning Time: 0.557 ms
Execution Time: 2826.897 ms
我第一次执行查询,花了30多秒。然而,即使堆获取数量保持不变且没有变化(仍然是 1,381,786),连续执行的时间始终少于 3 秒。
我很好奇为什么尽管堆获取没有变化,但连续执行的执行时间却减少了。这是否与 PostgreSQL 采用的缓存机制或其他优化有关?
我使用的是 PostgreSQL 版本 14.9
任何关于为什么会发生这种行为以及如何进一步优化查询或数据库设置的见解或建议将不胜感激。
谢谢。