一種情況,limit接受乙個引數,即是返回記錄的前面最大行數
另一情況,limit接受兩個引數,乙個是返回記錄行的偏移量,乙個是返回記錄行的最大數量
用法1:
limit rows
select * from user order by id limit 5;
返回記錄的前5行。
用法2:
limit offset, rows
select * from user order by id limit 5,10;
偏移量是5行,從第6行開始,返回記錄的10行,返回6 - 15行記錄。
在實際的開發應用中,分頁功能我們可以使用limit來實現資料庫的查詢,但當分頁越往後數,效能會慢慢變差,如:
limit 10000,20
使用explain分析下sql查詢:
> explain select * from user order by id asc limit 10000, 20
***************** 1. row **************
id: 1
select_type: ******
table: user
type: index
possible_keys: null
key: primary
key_len: 4
ref: null
rows: 10020
extra:
1 row in set (0.00 sec)
我們看到,只為查詢20行記錄,但卻查詢出10020行記錄,先拋掉前面的10000記錄,再取出20行記錄,這效能太差了。
limit中影響效能的是第乙個引數:偏移量,所以我們應該盡可能地使得偏移量變小。
上面的優化,我們可以這樣
select * from user where id > 10000 order by id asc limit 20;
這樣我們只是查詢出20行就可以了。
select * from user where id <= 10000 order by id desc limit 20;
limit 優化查詢
假設有如下sql語句 select from table1 limit offset,rows這是一條典型的limit語句,常見的使用場景是,某些查詢返回的內容特別多,而客戶端處理能力有限,希望每次只取一部分結果進行處理。上述sql語句的實現機制是 從 table 表中讀取offset rows行記...
MYSQL查詢優化 Limit
select from table limit offset,rows rows offset offset 在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行資料,這個時候怎麼辦呢?不用擔心,mysql 已經為我們提供了上面這樣乙個功能。limit 子句可以被用於強制 select 語句返回...
效能優化 Limit查詢的優化
limit常用於分頁處理,時長會伴隨order by從句使用,因此大多時候回使用filesorts這樣會造成大量的io問題。例子 需求 查詢影片id和描述資訊,並根據主題進行排序,取出從序號50條開始的5條資料。select film id,description from sakila.film ...