使用EXPLAIN命令查看慢查询时发现,有个int列在查询时未命中索引, 如图:
name = 0
![](https://img.haomeiwen.com/i2726978/4e3b703191299878.png)
而如果查询改为 name = 1:
![](https://img.haomeiwen.com/i2726978/267539828627e05c.png)
这是因为
该表中name为0的行数大于70%(或某个具体数值),索引查询会比seq scan顺序扫描要慢,PostgreSQL优化器选择使用顺序扫描的方式。
数据分布较小(比如 1.7%),则用 bitmap index scan。数据更少的时候,用的是 index scan。
使用EXPLAIN命令查看慢查询时发现,有个int列在查询时未命中索引, 如图:
name = 0
而如果查询改为 name = 1:
这是因为
该表中name为0的行数大于70%(或某个具体数值),索引查询会比seq scan顺序扫描要慢,PostgreSQL优化器选择使用顺序扫描的方式。
数据分布较小(比如 1.7%),则用 bitmap index scan。数据更少的时候,用的是 index scan。
本文标题:Postgresql未使用索引问题
本文链接:https://www.haomeiwen.com/subject/yclmpctx.html
网友评论