Explain Analyze上嵌套反循环的成本

时间:2012-11-05 21:31:48

标签: sql performance postgresql explain

我通过解析分析得到了followig输出:

Nested Loop Anti Join  (cost=0.00..36.92 rows=83 width=3) (actual time=0.303..1 0.631 rows=83 loops=1)
->  Seq Scan on paises p  (cost=0.00..5.46 rows=246 width=3) (actual time=0.0 43..0.336 rows=246 loops=1)
->  Index Scan using ciudades_pkey on ciudades c  (cost=0.00..12.92 rows=192 width=3) (actual time=0.038..0.038 rows=1 loops=246)
      Index Cond: (c.pais_codigo = (p.pais_codigo)::bpchar)
Total runtime: 10.897 ms
(5 rows)

我无法理解为什么循环反连接成本为36.92。

在其他网站上,我看到了循环的公式:上扫描成本+上排*内部成本。

但我的成本是36.92,所以没办法。 dbmanager如何解析此查询?

1 个答案:

答案 0 :(得分:1)

请参阅PostgreSQL源代码中的initial_cost_nestloop和final_cost_nestloop,了解计算方法的确切算法。

优化器考虑了内部关系的第一次扫描和重复扫描之间的差异,以及对于反连接仅可以处理索引扫描的第一次匹配的事实。加入两个关系的CPU成本将添加到子计划成本之上。

相关问题