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

文章目录

  • 一. 问题描述
  • 二. 解决方案

一. 问题描述

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

二. 解决方案

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

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

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

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

PG案例系列2:PG的执行计划没有走索引_第1张图片

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

你可能感兴趣的:(PostgreSQL,PostgreSQL优化,PostgreSQL执行计划)