數(shù)據(jù)庫(kù)有這么一張表格User以及一張用戶的日志表User_log想要根據(jù)日志查詢用戶于是有了這么一個(gè)sqlSELECT * FROM (SELECT * FROM User_log Order By create_time LIMIT 0, 50) JOIN User ONUser.user_id=User_log.user_id這個(gè)sql的思路是由于User表很大,所以直接子查詢先查出50條log然后連表查到用戶信息,但是結(jié)果發(fā)現(xiàn)效率有問(wèn)題,explain之后發(fā)現(xiàn)mysql的執(zhí)行順序沒(méi)有像我想象的一樣先查出50條再join而是先join了再去查,導(dǎo)致User表被遍歷了一遍。請(qǐng)問(wèn)這是為什么?PS:1.mysql版本5.6.162.同樣的sql在測(cè)試環(huán)境上不會(huì)有這種情況,測(cè)試環(huán)境mysql版本5.6.333.把log表?yè)Q成其他的有些表就不會(huì)出現(xiàn)以上的問(wèn)題,但是有一部分表就是會(huì)有問(wèn)題
mysql 執(zhí)行優(yōu)化
阿波羅的戰(zhàn)車
2018-12-11 21:40:37