加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 什么是查询计划中的“位图堆扫描”?

发布时间:2020-12-13 16:52:14 所属栏目:百科 来源:网络整理
导读:我想知道“位图堆扫描”的原理,我知道这经常发生 当我在条件中执行查询OR。 谁能解释“位图堆扫描”背后的原理? 最好的解释是 from Tom Lane,这是算法的作者,除非我错了。参见 wikipedia article。 总之,它有点像一个seq扫描。区别在于,位图索引扫描并
我想知道“位图堆扫描”的原理,我知道这经常发生
当我在条件中执行查询OR。

谁能解释“位图堆扫描”背后的原理?

最好的解释是 from Tom Lane,这是算法的作者,除非我错了。参见 wikipedia article。

总之,它有点像一个seq扫描。区别在于,位图索引扫描并不会访问每个磁盘页,而是将适用的索引AND和ORs放在一起,并且只访问所需的磁盘页。

这与索引扫描不同,索引扫描按顺序逐行访问索引 – 这意味着磁盘页可能被多次访问。

Re:你的评论中的问题…是的,这就是它。

索引扫描将逐行遍历行,一次又一次打开磁盘页,根据需要多次(有些会保留在内存中,但是你得到了点)。

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

注意,作为旁白,聚类/行顺序如何影响与任一方法相关的成本。如果行以随机顺序遍历整个地方,位图索引会更便宜。 (事实上??,如果他们真的在所有地方,seq扫描将是最便宜的,因为位图索引扫描是不是没有一些开销。)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读