如何優化limit

2022-08-02 13:21:14 字數 953 閱讀 2005

當乙個資料庫表過於龐大,limit offset, length中的offset值過大,則sql查詢語句會非常緩慢,你需增加order by,並且order by欄位需要建立索引。

如果使用子查詢去優化limit的話,則子查詢必須是連續的,某種意義來講,子查詢不應該有where條件,where會過濾資料,使資料失去連續性。

如果你查詢的記錄比較大,並且資料傳輸量比較大,比如包含了text型別的field,則可以通過建立子查詢。

select id,title,content from items where id in (select id from items order by id limit 900000, 10);

如果limit語句的offset較大,你可以通過傳遞pk鍵值來減小offset = 0,這個主鍵最好是int型別並且auto_increment

select * from users where uid > 456891 order by uid limit 0, 10;

這條語句,大意如下:

select * from users where uid >=  (select uid from users order by uid limit 895682, 1) limit 0, 10;

如果limit的offset值過大,使用者也會翻頁疲勞,你可以設定乙個offset最大的,超過了可以另行處理,一般連續翻頁過大,使用者體驗很差,則應該提供更優的使用者體驗給使用者。

2、記錄每次取出後的最大id 然後 where  id =  最大id   limit  10;這樣就可以解決了 然後我們來跑一下;

select id from test where  id =  最大id   limit  10;看看結果,時間是0.001秒! 幾乎可以說是沒有任何時間了

3、做索引

建乙個索引表:p(id,name,pid) 並設定成定長,然後做分頁,分頁出結果再到 test 裡面去找name。

如何優化limit

假設有如下sql語句 select from table1 limit offset,rows 這是一條典型的limit語句,常見的使用場景是,某些查詢返回的內容特別多,而客戶端處理能力有限,希望每次只取一部分結果進行處理。上述sql語句的實現機制是 從 table 表中讀取offset rows行...

查詢 limit優化

一種情況,limit接受乙個引數,即是返回記錄的前面最大行數 另一情況,limit接受兩個引數,乙個是返回記錄行的偏移量,乙個是返回記錄行的最大數量 用法1 limit rows select from user order by id limit 5 返回記錄的前5行。用法2 limit offs...

limit分頁優化

對於有大資料量的mysql表來說,使用limit分頁存在很嚴重的效能問題。查詢從第1000000之後的30條記錄 sql 1 平均用時6.6秒 select from cdb posts order by pid limit 1000000 30 sql 2 平均用時0.6秒 select from...