1. 程式人生 > >Mysql的三種分頁方法

Mysql的三種分頁方法

1、limit m,n分頁語句:select * from dept order by deptno desc limit 3,3;select * from dept order by deptno desc limit m,n;limit 3,3的意思掃描滿足條件的3+3行,撇去前面的3行,返回最後的3行,那麼問題來了,如果是limit 200000,200,需要掃描200200行,如果在一個高併發的應用裡,每次查詢需要掃描超過20W行,效率十分低下。2、limit m語句: select * from dept where deptno >10 order by deptno asc limit n;//下一頁 select * from dept where deptno <60 order by deptno desc limit n//上一頁這種方式不管翻多少頁只需要掃描n條資料。3、方法2 雖然掃描的資料量少了,但是在某些需要跳轉到多少也得時候就無法實現,這時還是需要用到方法1,既然不能避免,那麼我們可以考慮儘量減小m的值,因此我們可以給這條語句加上一個條件限制。是的每次掃描不用從第一條開始。這樣就能儘量減少掃描的資料量。例如:每頁10條資料,當前是第10頁,當前條目ID的最大值是109,最小值是100.那麼跳到第9頁:select * from dept where deptno<100 order by desc limit 0,10;那麼跳到第8頁:select * from dept where deptno<100 order by desc limit 10,10;那麼跳到第11頁:select * from dept where deptno>109 order by asc limit 0,10;那麼跳到第11頁:select * from dept where deptno>109 order by asc limit 10,10;如有錯誤,敬請指正,在此提前表示感謝!!!