PG案例系列2:PG的执行计划没有走索引

一. 问题描述

今天开发的找到我,说他创建了一个索引,但是查看执行计划,依旧走的是全表扫描,很让人头疼。
让我帮忙分析下具体的原因。

二. 解决方案

我把复杂问题简单化,就单表执行where条件查询表,看能不能重现开发说的问题

结果居然真的和他说的一样


image.png

我看了下居然真的走了全表扫描,不过我看了下,基本上都在buffers中缓存了
shared hit代表的是缓存的数据块,一个数据块默认是8k,算上和表的总数差不多了,所以直接从内存读会比通过索引回表块,此时当然就直接走全表从内存中读取了。

因为buffers是全局的,而且这个环境是生产环境,我暂时不好处理,于是就等了几分钟,重新运行查询。

image.png

从上图可以看到,最终就走了索引查询了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容