MySQL中怎麼將LIMIT分頁優化?

2022-09-22 18:13:06 字數 854 閱讀 6219

1.語法:

*** limit [offset,] rows

一般是用於select語句中用以從結果集中拿出特定的一部分資料。

offset是偏移量,表示我們現在需要的資料是跳過多少行資料之後的,可以忽略;rows表示我們現在要拿多少行資料。

2.栗子:

①select * from mytbl limit 10000,100

上邊sql語句表示從表mytbl中拿資料,跳過10000行之後,拿100行

②select * from mytbl limit 0,100

表示從表mytbl拿資料,跳過0行之後,拿取100行

③select * from mytbl limit 100

這條sql跟②的效果是完全一樣的,表示拿前100條資料

3.用處:

我目前用到的地方是資料庫查詢分頁,比如前臺要展示資料庫中資料,需要後臺實現分頁,傳入資料要有“頁碼page”跟“每頁資料條數nums”。

對應sql大概是這樣子:select * from mytbl order by id limit (page-1)*nums,nums

4.問題發現:

在資料量不大或者是大資料量的前幾頁的時候,效能還算不壞,但是大資料量頁碼稍微大一點效能便下降比較嚴重。

5.問題分析:

原因出在limit的偏移量offset上,比如limit 100000,10雖然最後只返回10條資料,但是偏移量卻高達100000,資料庫的操作其實是拿到100010資料,然後返回最後10條。

那麼解決思路就是,我能不能跳過100000條資料然後讀取10條,而不是讀取100010條資料然後返回10條資料。

6.問題解決實現:

原sql語句如下:

mysql中的limit

mysql中常使用limit做分頁查詢,使用方法也很簡單 select from table limit offset rows 注 off...

MYSQL中limit的用法

limit子句用於限制查詢結果返回的數量,常用於分頁查詢 格式 1 select from tablename limit i n 2 ta...

mysql中limit用法誤區

之前一直用oracle,在分頁的時候用rownumber,轉換到mysql上之後,用limit做分頁 在做某個業務的時候,需要先將資料排序,再分頁,在給limit上引數的時候沿用了oracle的rownumber方式傳參,最終導致了分頁查到的資料越來越多,導致響應越來越慢,最終找到了問題所在 錯誤 ...