2012-11-05 46 views
2

我收到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如何解決此查詢?

+2

哪個查詢?哪個版本的PostgreSQL?哪個表定義?哪些樣本數據? –

回答

1

請參閱initial_cost_nestloop和PostgreSQL源文件中的final_cost_nestloop,以獲取計算結果的確切算法。

優化程序正在考慮內部關係的第一次和重複掃描之間的差異,以及對於反連接僅處理索引掃描的第一次匹配的事實。加入這兩個關係的CPU成本被添加在子計劃成本之上。

+0

謝謝,我在想這是一個簡單的計算。我相信我的老師不想知道爲什麼應用2.0的模糊係數。但是,謝謝,關於源代碼的評論將是有用的。 –