mysql 效率 inner join 与 where in

-- report 123.77k行 report_loss 620 行
-- inner join ;report_loss 索引 all report 索引 eq_ref ;
-- total 0.01118s
EXPLAIN
SELECT * FROM report 
INNER JOIN report_loss ON report.id=report_loss.ReportId;
-- inner join 前进行处理 ; report_loss 索引 index report 索引  eq_ref 临时表 索引 all;临时表只有一列
-- total 0.0931s
EXPLAIN
SELECT * FROM report 
INNER JOIN (SELECT reportid FROM report_loss ) a  ON a.reportid=report.Id;
-- where in ; report_loss 索引 index report 索引 eq_ref 
-- total 0.00593s
EXPLAIN
SELECT * FROM report 
WHERE id IN (SELECT reportid FROM report_loss ) 

 

首先类型有许多,用的最多的类型:

system>const>eq_ref>ref>range>index>ALL

越往左边,性能越高,比如system就比ALL类型性能要高出许多,其中system、const只是理想类型,基本达不到;

我们自己实际能优化到ref>range这两个类型,就是自己写SQL,如果你没优化基本上就是ALL,如果你优化了,那就尽量达到ref>range这两个级别;

转载于:https://www.cnblogs.com/zhaokunbokeyuan256/p/10754461.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值