【发布时间】:2012-04-26 01:34:57
【问题描述】:
我有一个包含 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 列。
谢谢!
【问题讨论】:
标签: postgresql