MYSQL查詢優化 Limit

2021-06-26 03:43:53 字數 2568 閱讀 5047

select * from table  limit [offset,] rows | rows offset offset

在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行資料,這個時候怎麼辦呢?不用擔心,mysql

已經為我們提供了上面這樣乙個功能。

limit 子句可以被用於強制 select 語句返回指定的記錄數。limit 接受乙個或兩個數字引數。引數必須是乙個整數常量。如果給定兩個引數,第乙個引數指定第乙個返回記錄行的偏移量,第二個引數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1): 為了與 postgresql 相容,mysql 也支援句法: limit # offset #。

//為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1:

mysql> select * from table limit 95,-1; // 檢索記錄行 96-last.

//如果只給定乙個引數,它表示返回最大的記錄行數目: 

mysql> select * from table limit 5;     //檢索前 5 個記錄行

//換句話說,limit n 等價於 limit 0,n。

limit語法:

select

*from

table limit [

offset,

] rows | rows offset offset

limit子句可以被用於強制 select 語句返回指定的記錄數。limit接受乙個或兩個數字引數。引數必須是乙個整數常量。

如果給定兩個引數,第乙個引數指定第乙個返回記錄行的偏移量,第二個引數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1)。

為了與 postgresql 相容,mysql 也支援句法:limit # offset #。

eg:

mysql>

select

*from

table limit5,10; //檢索記錄行6-15

//為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為-1

mysql>

select

*from

table limit95,-

1; //檢索記錄行96-last

//如果只給定乙個引數,它表示返回最大的記錄行數目,換句話說,limit n 等價於 limit 0

,nmysql>

select

*from

table limit5; //檢索前5個記錄行

mysql的limit給分頁帶來了極大的方便,但資料量一大的時候,limit的效能就急劇下降。

同樣是取10條資料,下面兩句就不是乙個數量級別的。

select

*from

table limit10000,10

select

*from

table limit0,10

文中不是直接使用limit,而是首先獲取到offset的id然後直接使用limit size來獲取資料。根據他的資料,明顯要好於直接使用limit。

這裡我具體使用資料分兩種情況進行測試。

1、offset比較小的時候:

select

*from

table limit10,10//多次執行,時間保持在0.0004-0.0005之間

select

*from

table

where vid >=(select vid from

table

order

by vid limit10,1) limit10//多次執行,時間保持在0.0005-0.0006之間,主要是0.0006

結論:偏移offset較小的時候,直接使用limit較優。這個顯然是子查詢的原因。

2、offset大的時候:

select

*from

table limit10000,10

//多次執行,時間保持在0.0187左右

select

*from

table

where vid >=(select vid from

table

order

by vid limit10000,1) limit10

//多次執行,時間保持在0.0061左右,只有前者的1/3。可以預計offset越大,後者越優。

Mysql查詢使用Limit優化

在某些情況下,如果明知道查詢結果只有乙個,sql語句中使用limit 1會提高查詢效率,感興趣的朋友可以了解下哈,希望對你優化mysql查詢有所幫助 在某些情況下,如果明知道查詢結果只有乙個,sql語句中使用limit 1會提高查詢效率。例如下面的使用者表 主鍵id,郵箱,密碼 複製 如下 crea...

MySQL慢查詢優化之Limit優化

資料來源是4000000萬條員工資料 1.一般方法 2.延遲關聯優化方法 優化思路 3.利用上一次limit查詢主鍵值 select from emp where empno 1000000 limit 20對以上三種limit分頁方法執行100次查詢,計算每種查詢的平均執行時間 對比速度下來第一種...

查詢 limit優化

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