暂无图片
pg中覆盖索引中的Heap Fetches 是啥意思??
我来答
分享
暂无图片 匿名用户
pg中覆盖索引中的Heap Fetches 是啥意思??

 explain analyze select * from tb1 where id is null;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Index Only Scan using i_tb1 on tb1 (cost=0.29..4.31 rows=1 width=4) (actual time=0.048..0.061 rows=1 loops=1)
Index Cond: (id IS NULL)
Heap Fetches: 1

覆盖索引中的Heap Fetches: 1 ,表示啥意思?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
shunwahⓂ️

Heap Fetches 表明需要扫描数据块的个数。

Heap Fetches: 1
表明准确扫描到数据块的个数是1

虽然Index Only Scan 可以从索引直接输出结果。但是因为PostgreSQL MVCC 机制的实现,需要对扫描的元组进行可见性判断,即检查visibility MAP 文件。当新建表之后,如果没有进行过vacuum和autovacuum操作,这时还没有VM文件,而索引并没有保存记录的版本信息,索引Index Only Scan 还是需要扫描数据块(Heap Fetches 代表需要扫描的数据块个数)来获取版本信息,这个时候可能会比Index Scan 慢。

image.png

参考:https://blog.csdn.net/GodSure0914/article/details/116397594

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~