我有一张有 450 万行的表格。没有主键。该表有一列p_id
,类型为整数。使用该方法idx_mytable_p_id
在此列上有一个索引。btree
我愿意:
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 告诉我的成本是多少?
记录有 773 行,p_id
值为 123456。 上有 38 列mytable
。
谢谢!