私は450万行のテーブルを持っています。主キーはありません。テーブルには、整数p_id
の列があります。 btree
メソッドを使用してこの列にインデックスidx_mytable_p_id
があります。私が行いますポストグルを理解するとビットマップヒープ/インデックススキャンが説明されます
SELECT * FROM mytable WHERE p_id = 123456;
私はこの上で説明し、次の出力を参照実行します。なぜ、そのクエリは、ヒープスキャンして、ビットマップ索引をやっている
- :
Bitmap Heap Scan on mytable (cost=12.04..1632.35 rows=425 width=321) Recheck Cond: (p_id = 543094) -> Bitmap Index Scan on idx_mytable_p_id (cost=0.00..11.93 rows=425 width=0) Index Cond: (p_id = 543094)
質問スキャン?
- なぜ425行が検査されますか?なぜ操作の幅は321ですか?
- 12.04..1632.35と0.00..11.93の費用はいくらですか?
レコードの場合、p_id
の値が123456の773行があります。mytable
には38個の列があります。
ありがとうございます!
内部操作の合計コストは、外部操作の起動コストに常に含まれます。 – vyegorov
@vyegorovは正しいです、EXPLAIN ANALYZEの**実際の**データについては、**ループ回数**でノードの総所要時間を除算して反復ごとの時間を表示することに注意してください。予想通り、囲みノードに含まれるノードの合計時間です。 – kgrittn