MYSQL LIMIT 使用優(yōu)化技巧

1.limit 分頁(yè)優(yōu)化

如果數(shù)據(jù)量很大頁(yè)數(shù)較多,limit 偏移量越大 就會(huì)查詢的速度越慢。

原因是 偏移量越大掃描的行數(shù)越多 ,比如 limit 100000 , 10 ,意思是掃描符合條件的 1000010 只要后 10條記錄,這樣偏移量越大掃描行數(shù)越多,就越慢。

改為關(guān)聯(lián)子查詢會(huì)較快些,把多表篩選 limit 改為 單表。與之前相比 會(huì)快些。

如下sql.

原sql: SELECT auc.CITY_ID,auc.CITY_NAME,fa.CREATE_TIME

         FROM BOSS_FINANCE_APPLY fa

         INNER JOIN BOSS_FINANCE_AUCTION auc ON fa.AUCTION_ID=auc.AUCTION_ID

         WHERE fa.APPLY_BACK_STATUS=0 AND fa.CITY_ID =2

         ORDER BY APPLY_STATUS,ID DESC LIMIT 800,20;

優(yōu)化后sql: SELECT auc.CITY_ID,auc.CITY_NAME,fa.CREATE_TIME

                FROM BOSS_FINANCE_APPLY fa

                INNER JOIN BOSS_FINANCE_AUCTION auc ON fa.AUCTION_ID=auc.AUCTION_ID

                INNER JOIN (SELECT ID FROM BOSS_FINANCE_APPLY WHERE APPLY_BACK_STATUS=0 and CITY_ID =2 ORDER BY APPLY_STATUS,ID DESC LIMIT 800,20) TFA    //新增子查詢優(yōu)化

                WHERE fa.ID=TFA.ID ;

優(yōu)化后 查詢時(shí)間會(huì)縮短原來(lái)的 幾十倍到幾百倍不等。

2,查詢數(shù)據(jù)時(shí)候 發(fā)現(xiàn)加上了 limit 1 ,sql不會(huì)使用之前優(yōu)化后的索引,處理方法是,在sql語(yǔ)句中指定 使用某個(gè)索引。

 網(wǎng)上說(shuō) 加limit不是導(dǎo)致 mysql使用不同索引的原因,這還是和mysql的 語(yǔ)法解析器有關(guān),還有與mysql的版本有關(guān)系。

 強(qiáng)制索引是一種簡(jiǎn)單的解決這類問題的辦法。

如下sql:

  SELECT
       a.ID,
       a.AUCTION_ID
  FROM
      BOSS_FINANCE_APPLY a FORCE INDEX(IDX_STATUS_TYPE)   //指定使用某個(gè)索引
  INNER JOIN BOSS_FINANCE_AUCTION b ON a.AUCTION_ID = b.AUCTION_ID
      AND a.APPLY_BACK_STATUS = 0
      AND a.ALLOCATION_TYPE = 0
      AND a.APPLY_STATUS < 2
 WHERE
      NOT EXISTS ( SELECT ( 1 ) FROM BOSS_FINANCE_CHANNEL_NO_TASK c WHERE c.CHANNEL_ID = b.SOURCE_ID OR c.CHANNEL_ID = b.CHANNEL_ID )
 ORDER BY
     a.ID limit 1;

IDX_STATUS_TYPE 索引是:APPLY_STATUS和ALLOCATION_TYPE 的組合索引。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容