mysql索引优化实战<三>

join 语句的优化
		1.关联字段加索引,特别是被驱动表
		2.尽量让小表先执行,小表驱动大表
in 和exist  原则也是尽量让小表驱动大表
in:当B表的数据集小于A表的数据集时,in优于exists
select * from A where id in (select id from B)
这个sql是里面的先执行
到的结果集之后再用外面的这条sql语句跟里面的 这个结果集去关联
如果你b的数据量较小的情况下 可以用in
exists:当A表的数据集小于B表的数据集时,exists优于in
 select * from A where exists (select 1 from B where B.id = A.id)
我先查出外层的结果集  然后外面的结果集跟里面的结果集 逐条关联
exist走的是外层 再去里层去过滤


按照小表驱动的原则  
对于exist 适合于A表比较小的场景  对于in适合b表比较小的场景

Guess you like

Origin blog.csdn.net/weixin_43689953/article/details/121088114