回表查询导致 select * 比select 具体字段快
这里使用的是postgresql
联表查询 select * 0.008秒 快的不寻常

一样的条件 select 主键 略逊一筹
如果加上其他字段差的更多了,差距大概在五倍左右

看一下explain执行计划
select * 的 explain
正常的左连接 和 全表扫描

select 主键
这里使用的是 merge lfet join

通过上面看出 大概率是merge join 没干过 hash join
但是如果查询的不止主键,还有其他字段,就又慢了下来

看看主键及其他字段的查询计划
使用的也是hash left join 但是速度也是慢了一下

查询的字段又主键,走主键索引,回表查询,导致,查询一下非主键字段试试
速度又快起来了

但是我这里的主键是唯一主键索引,应该不会导致回表查询 为什么会造成这样的问题?

难道这样子不是主键,只是普通的索引?
感觉就是回表查询在搞鬼
发现个严重的问题
直接对表select * 比上面的联表查询慢得多的多
人给整晕了

浙公网安备 33010602011771号