萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql limit的用法

mysql limit的用法

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

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。

下面我來舉一個簡單的例子。
考慮如下表結構:
/

*DDL Information For - t_girl.t_page_sample*/
----------------------------------------------

Table          Create Table                                                    
-------------  ----------------------------------------------------------------
t_page_sample  CREATE TABLE `t_page_sample` (                                  
                 `id` int(10) unsigned NOT NULL,                               
                 `v_state` tinyint(1) NOT NULL DEFAULT '1',                    
                 `log_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',  
                 `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,   
                 PRIMARY KEY (`id`)                                            
               ) ENGINE=MyISAM DEFAULT CHARSET=utf8

我的測試系統為標配DELL D630, XP系統。
示例表的記錄數:

select count(*) from t_page_sample;

<!-->
query result(1 records)
count(*)
993098

下面我們來一步一步看看下面的這條語句:

explain select sql_no_cache * from t_page_sample order by id asc limit 900001,20;

看看limit優化方法

select *
from cn_loupan_news
where id >= (
select id
from cn_loupan_news
limit 800000 , 1 )
limit 10

顯示行 0 - 9 (10 總計, 查詢花費 0.2456 秒)


更多詳細內容請查看:http://www.111cn.net/database/mysql/34608.htm

copyright © 萬盛學電腦網 all rights reserved