返回信息流先分别筛选再join
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #7103347同步于 2024/4/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖
mysql执行优化求助
IWhisper#377
2024/4/25镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
一个查询,先join之后再在where里加筛选条件 和 先对表筛选,再join连接的执行效率哪个会更高,查询结果一样吗,javaguide里面没找到答案
引擎会自动优化的啊。
如果你说的 先对表筛选再join是 “子查询a join 子查询b on ……”的话,那么这个查询效率是不高的
因为子查询b的结果,是一个view,view上没有索引,导致需要对整个view进行扫描
另外实际工作中,如果你线上用join,cr过不了的
: 如果你说的 先对表筛选再join是 “子查询a join 子查询b on ……”的话,那么这个查询效率是不高的
: 因为子查询b的结果,是一个view,view上没有索引,导致需要对整个view进行扫描
: ............
就是效率一样吗
: 如果你说的 先对表筛选再join是 “子查询a join 子查询b on ……”的话,那么这个查询效率是不高的
: 因为子查询b的结果,是一个view,view上没有索引,导致需要对整个view进行扫描
: ............
就是select * from a inner join b where 加 筛选条件 和 select * from (select * from a 加筛选条件)t1 inner join (select * from b 加筛选条件)t2
join的数学原理是笛卡尔积好像,t1 join t2,原理是拿出t1的一条数据,与t2的所有符合条件的数据进行笛卡尔积
因此性能优化点在于减少t2的扫描次数
如果t2是个view,那么t2必然无法使用索引,性能必然最差