奇怪的慢sql

我們先來(lái)看2條sql

第一條:

select * from acct_trans_log WHERE  acct_id = 1000000000009000757 order by create_time desc limit 0,10

  

第二條:

 select * from acct_trans_log WHERE  acct_id = 1000000000009003061 order by create_time desc limit 0,10

表的索引及數(shù)據(jù)總情況:

 

索引:acct_id,create_time分別是單列索引,數(shù)據(jù)庫(kù)總數(shù)據(jù)為500w

通過(guò)acct_id過(guò)濾出來(lái)的結(jié)果集在1w條左右

 

查詢結(jié)果:第一條要5.018s,第二條0.016s

為什么會(huì)是這樣的結(jié)果呢?第一,acct_id和create_time都有索引,不應(yīng)該出現(xiàn)5s查詢時(shí)間這么慢啊

 

那么先來(lái)看執(zhí)行計(jì)劃

第一條sql執(zhí)行計(jì)劃:

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 第二條執(zhí)行計(jì)劃:

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 仔細(xì)觀察會(huì)發(fā)現(xiàn),索引只使用了idx_create_time,沒(méi)有用到idx_acct_id

這能解釋第一條sql很慢,因?yàn)閣here查詢未用到索引,那么第二條為什么這么快?

看起來(lái)匪夷所思,其實(shí)搞

網(wǎng)友評(píng)論