2011-07-06 49 views

回答

85

最好的解释来from Tom Lane,这是该算法的作者,除非我弄错。另请参阅wikipedia article

总之,这是一个有点像序列扫描。区别在于,与其访问每个磁盘页面不同,位图索引扫描AND和ORs适用索引,并且只访问它需要的磁盘页面。

这是一个索引扫描,其中指数是由行顺序访问行的不同 - 这意味着一个磁盘页面可能会多次访问。


回复:您的评论中的问题...是的,就是这样。

索引扫描将通过行一个接一个,一次又一次地打开磁盘页面,需要多次(当然留在记忆的一些意愿,但你明白了吧)。

位图索引扫描将按顺序打开磁盘页面的短列表,并抓取每个磁盘页面中的每个适用行(因此您在查询计划中看到所谓的复检cond)。

请注意,另一方面,聚类/行顺序如何影响任一方法的相关成本。如果行以随机顺序遍布整个地方,则位图索引将更便宜。 (事实上​​,如果它们确实是全部以上的地方,seq扫描将是最便宜的,因为位图索引扫描不是没有一些开销。)

+0

因此,“位图堆扫描”:一页不能一次访问!但是“索引可以”:一个页面可以被访问多次,因为索引是按顺序逐行访问的。 – francs