回表查询导致 select * 比select 具体字段快
这里使用的是postgresql
联表查询 select * 0.008秒 快的不寻常
一样的条件 select 主键 略逊一筹
如果加上其他字段差的更多了,差距大概在五倍左右
看一下explain执行计划
select * 的 explain
正常的左连接 和 全表扫描
select 主键
这里使用的是 merge lfet join
通过上面看出 大概率是merge join 没干过 hash join
但是如果查询的不止主键,还有其他字段,就又慢了下来
看看主键及其他字段的查询计划
使用的也是hash left join 但是速度也是慢了一下
查询的字段又主键,走主键索引,回表查询,导致,查询一下非主键字段试试
速度又快起来了
但是我这里的主键是唯一主键索引,应该不会导致回表查询 为什么会造成这样的问题?
难道这样子不是主键,只是普通的索引?
感觉就是回表查询在搞鬼
发现个严重的问题
直接对表select * 比上面的联表查询慢得多的多
人给整晕了