当前位置:首页 > Mysql教程 > 列表

mysql limit的用法

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-17 14:21:07 浏览: 评论:0 

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须 是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回 记录行的最大数目。初始记录行的偏移量

mysql已经为我们提供了这样一个功能:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数,参数必须是一个整数常量,如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目,初始记录行的偏移量是 0(而不是 1):为了与 PostgreSQL 兼容,MySQL 也支持句法:|

  1. LIMIT # OFFSET #. 
  2.  
  3. mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 
  4.  
  5. //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:  
  6. mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. 
  7.  
  8. //如果只给定一个参数,它表示返回最大的记录行数目:  
  9. mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 
  10.  
  11. //换句话说,LIMIT n 等价于 LIMIT 0,n。 

下面我来举一个简单的例子,考虑如下表结构:

  1.  
  2. *DDL Information For - t_girl.t_page_sample*/  
  3. ---------------------------------------------- 
  4.  
  5. Table          Create Table                                                     
  6. -------------  ----------------------------------------------------------------  
  7. t_page_sample  CREATE TABLE `t_page_sample` (                                   
  8.                  `id` int(10) unsigned NOT NULL,                                 
  9.                  `v_state` tinyint(1) NOT NULL DEFAULT '1',                     
  10.                  `log_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',    
  11.                  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,     
  12.                  PRIMARY KEY (`id`)                                             
  13.                ) ENGINE=MyISAM DEFAULT CHARSET=utf8 

我的测试系统为标配DELL D630,XP系统,示例表的记录数:

  1. select count(*) from t_page_sample; 
  2.  
  3. <!-->  
  4. query result(1 records) 
  5. count(*)  
  6. 993098 

下面我们来一步一步看看下面的这条语句:

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

看看limit优化方法,代码如下:

  1. select *  
  2. from cn_loupan_news 
  3. where id >= (  
  4. select id 
  5. from cn_loupan_news 
  6. limit 800000 , 1 )  
  7. limit 10 
  8. --phpfensi.com 

显示行 0 - 9(10 总计,查询花费 0.2456 秒).

Tags: mysql limit的用法

分享到: