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