limit 一般用於經常要返回前幾條或者中間某幾行資料的查詢語句語句中,具體格式如下:
select
*from
table
limit
[offset,
]rows
|rows offset offset
limit 子句可以被用於強制 select 語句返回指定的記錄數。limit 接受乙個或兩個數字引數。引數必須是乙個整數常量。如果給定兩個引數,第乙個引數指定第乙個返回記錄行的偏移量,第二個引數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1)
舉例說明:
mysql
>
select
*from
table
limit 5,
10;
//檢索記錄行 6-
15//為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1
: mysql
>
select
*from
table
limit 95,
-1; //
檢索記錄行 96-
last.
//如果只給定乙個引數,它表示返回最大的記錄行數目:
mysql
>
select
*from
table
limit
5;
//檢索前
5個記錄行
//換句話說,limit n 等價於 limit
0,n。
而如果想要實現從資料庫的最後一條倒序讀出固定的資訊條數,則可用:
select * from tablename where(後加條件) order by (條件) desc limit (固定條數) ;
例如:如果想從表hello中讀出10條以id形式排列的classid數為0的資訊。可寫為:
select * from hello where classid=0 order by id desc limit 10;
在sql語句中,limit的功能很強大,使用的地方很多,所以要多注意,使用它能夠很大的節省**數,讓**看起來簡潔明瞭
**limit優化
尤其是當資料量非常大的時候,對mysql的優化是非常重要的,最常用也最需要優化的就是limit了。mysql的limit給分頁帶來了極大的方便,但資料量一大的時候,limit的效能就急劇下降。
同樣是取10條資料
select * from table_name limit 10000,10 和
select * from table_name limit 0,10
就不是乙個數量級別的。
網上也很多關於limit的五條優化準則,都是翻譯自mysql手冊,雖然正確但不實用。今天發現一篇文章寫了些關於limit優化的,很不錯。
文中不是直接使用limit,而是首先獲取到offset的id然後直接使用limit size來獲取資料。根據他的資料,明顯要好於直接使用limit。這裡我具體使用資料分兩種情況進行測試。
1、offset比較小的時候。
select * from yanxue8_visit limit 10,10
多次執行,時間保持在0.0004-0.0005之間
select * from yanxue8_visit where vid >=(
select vid from yanxue8_visit order by vid limit 10,1
) limit 10
多次執行,時間保持在0.0005-0.0006之間,主要是0.0006
結論:偏移offset較小的時候,直接使用limit較優。這個顯然是子查詢的原因。
2、offset大的時候。
select * from yanxue8_visit limit 10000,10
多次執行,時間保持在0.0187左右
select * from yanxue8_visit where vid >=(
select vid from yanxue8_visit order by vid limit 10000,1
) limit 10
多次執行,時間保持在0.0061左右,只有前者的1/3。可以預計offset越大,後者越優。
**
sql語句limit用法詳解
科教篇 select from table limit offset,rows rows offset offset 入門篇select from table limit 0,10 檢索記錄行1 10 高階篇select from table limit 2,10 檢索記錄行3 13 select ...
mysql中limit用法詳解
在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行資料,這個時候怎麼辦呢?不用擔心,mysql 已經為我們提供了這樣乙個功能,儘管語法邏輯很是怪異。這個功能就好比oracle裡的rownum,但比mysql提供的這個limit好用 好記和好理解多了,呵呵。from table limit of...
mysql中limit用法詳解
在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行資料,這個時候怎麼辦呢?不用擔心,mysql已經為我們提供了這樣乙個功能,儘管語法邏輯很是怪異。這個功能就好比oracle裡的rownum,但比mysql提供的這個limit好用 好記和好理解多了,呵呵。from table limit off...