PostgreSQL中EXPLAIN ANALYZE语句里的loops参数含义是什么?
理解PostgreSQL EXPLAIN ANALYZE中的loops=1
嘿,我来帮你搞清楚这个loops=1到底是什么意思~
首先先回顾下你的查询和执行计划:
postgres=# explain analyze select * from student;
对应的QUERY PLAN输出:
Seq Scan on student (cost=0.00..22.00 rows=1200 width=40) (actual time=0.005..0.005 rows=7 loops=1) Planning time: 0.035 ms Execution time: 0.019 ms
在PostgreSQL的EXPLAIN ANALYZE输出里,loops这个字段代表的是当前执行节点被重复运行的次数。
针对你的例子来说:
- 这里的执行节点是
Seq Scan on student(全表序列扫描),loops=1意味着这个扫描操作只被执行了1次。 - 这完全符合你的查询场景:因为你是直接查询整个student表,PostgreSQL只需要一次性扫描完表中的所有数据(也就是实际返回的7行),不需要重复执行这个扫描步骤就能完成查询。
那什么时候loops会大于1呢?举两个常见场景:
- 当这个节点是嵌套循环连接的内层表时:外层表每扫描到一行,内层表的查询节点就会被执行一次,此时
loops的值就等于外层表返回的行数。 - 某些需要重复迭代的查询:比如递归查询、部分聚合操作,或者带有
UNION ALL且需要多次执行子计划的情况,都可能让节点的loops数大于1。
总结一下,你的loops=1就是最基础、最常见的情况——这个扫描节点只需要跑一次就完成了它的任务~
内容的提问来源于stack exchange,提问作者Mangu Singh Rajpurohit
相关产品推荐
相关产品推荐

