mysql 分頁,mysql limit優化,mysql offset優化,mysql 分頁方法

(1).首先咱們須要瞭解limit分頁的工做流程內存

demo:  SELECT * FROM table LIMIT 10000,5

 一般咱們會認爲以上SQL會從10000條後面取5條,正確的是取出10005條,而後再拋棄前面的10000條.隨着分頁的增長內存消耗越高工作流

 eg:it

 SELECT * from  user`  LIMIT  0,10     (執行查詢用時0.001s)
 SELECT * from  user`  LIMIT  200000,10   (執行查詢用時0.035s)
 SELECT  *  from    user`   LIMIT   20000000,10;(執行查詢用時2.451s)

(2).解決方法:table

    2.1.限制總分頁數,例如百度限制最多76頁.歷史數據須要查詢能夠作站內篩選。百度

    2.2.select

   SELECT  * from    `user`  where id>20000000  limit 10(執行查詢用時0.001s)   //2000W查詢

    本方法缺點是id中間必須保證連續性,刪除數據時候作邏輯刪除便可.不然id不連續很尷尬分頁

    2.3.方法

    (2.3.1).select *  from  user   limit   40000001,3;(原始方式4.9s)
    (2.3.2).SELECT  *   FROM  user  as  a  INNER JOIN (SELECT  id  FROM    user   limit 4000001,3)  as b  on  a.id= b.id;(新方法0.5s)      //2.3推薦的方法,4000w查詢 0.5s

    本方法解決了id不連續的問題,能夠真實刪除數據im

相關文章
相關標籤/搜索