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這兩個級別;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM