最近一直在研究Postgresql相关的内部处理机制,碰巧碰见了一个问题,就是同一个sql语句,只是取值不同,但是查看查询计划时,执行的方式是不同的,如图:
图1
图2
sql语句如下:
SELECT buyer_nick from tb_crm where shop_id=62227339和SELECT buyer_nick from tb_crm where shop_id=144939
为什么执行的计划却不一样呢?当时就觉得很奇怪了,后来我查看了各条件的记录数,如下图:
两个记录数不一样,所以我猜测是Postgresql自己对查询语句做过优化。 结论: 所以建立的索引,Postgresql在执行时,并不会一定用上。