使用Limit引數優化MySQL查詢

2021-08-29 14:43:43 字數 769 閱讀 1603

我們在做一些查詢的時候總希望能避免資料庫引擎做全表掃瞄,因為全表掃瞄時間長,而且其中大部分掃瞄對客戶端而言是沒有意義的。那麼在 mysql 中有那些方式是可以避免全表掃面的呢?除了我們大家很熟悉的通過使用索引列或分割槽等方式來進行查詢的優化之外還有那些呢? 在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行資料,這個時候怎麼辦呢?不用擔心,mysql已經為我們提供了這樣乙個功能。

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

limit 子句可以被用於強制 select 語句返回指定的記錄數。limit 接受乙個或兩個數字引數。引數必須是乙個整數常量。如果給定兩個引數,第乙個引數指定第乙個返回記錄行的偏移量,第二個引數指定返回記錄行的最大數目。

初始記錄行的偏移量是 0(而不是 1): 為了與 postgresql 相容,mysql 也支援句法:

limit # offset #。

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。 

Mysql查詢使用Limit優化

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

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