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