limit用法詳解

2021-06-23 04:33:50 字數 2172 閱讀 9060

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...