精华内容
下载资源
问答
  • 1、Mysql的limit用法 Sql代码  SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset    LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。...

    1、Mysql的limit用法

    Sql代码   收藏代码
    1. SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset  

     

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

     

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

     

        【引用,路人乙:Mysql中limit的用法详解

     

    2、Mysql的分页查询语句的性能分析

     

     

          MySql分页sql语句,如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。使用它来分页是再自然不过的事情了。

     

    2.1最基本的分页方式:

     

    Sql代码   收藏代码
    1.    
    2. SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...  
      

    在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引:

    举例来说,如果实际SQL类似下面语句,那么在category_id, id两列上建立复合索引比较好:

     

    Sql代码   收藏代码
    1. SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10  
      

     

    2.2子查询的分页方式:

     

    随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:

    Sql代码   收藏代码
    1. SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10  
      

    一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。

    此时,我们可以通过子查询的方式来提高分页效率,大致如下:

    Sql代码   收藏代码
    1. SELECT * FROM articles WHERE  id >=  
    2.  (SELECT id FROM articles  WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10  
     

     

    2.3JOIN分页方式

     

    Sql代码   收藏代码
    1. SELECT * FROM `content` AS t1   
    2. JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2   
    3. WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize;   
      

         经过我的测试,join分页和子查询分页的效率基本在一个等级上,消耗的时间也基本一致。

    explain SQL语句:

    id select_type table type possible_keys key key_len ref rows Extra

    1 PRIMARY <derived2> system NULL NULL NULL NULL 1  

    1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 Using where

    2 DERIVED content index NULL PRIMARY 4 NULL 27085 Using index

     

    ----------------------------------------

     

    为什么会这样呢?因为子查询是在索引上完成的,而普通的查询时在数据文件上完成的,通常来说,索引文件要比数据文件小得多,所以操作起来也会更有效率。

     

    实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。

    【引用原文,energy1010的空间:MySql分页sql语句

     

     

    3、Oracle分页查询语句

    Oralce数据库 

    从数据库表中第M条记录开始检索N条记录 

    Sql代码   收藏代码
    1. SELECT * FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2   
    2.  where t2.r >= M   

       例如从表Sys_option(主键为sys_id)中从第10条记录开始检索20条记录,语句如下: 

    Sql代码   收藏代码
    1. SELECT * FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2   
    2. Where t2.R >= 10   
      

    3、MSSQLSERVER分页查询语句

     

    SQL Server主要利用 SELECT TOP语句分页,具体方案,请参考

     

    ------------------------------------- 

     

    分页方案一:(利用Not In和SELECT TOP分页) 

    语句形式: 

     

    Sql代码   收藏代码
    1. SELECT TOP 10 *   
    2. FROM TestTable   
    3. WHERE (ID NOT IN   
    4. (SELECT TOP 20 id   
    5. FROM TestTable   
    6. ORDER BY id))   
    7. ORDER BY ID   
       
    Sql代码   收藏代码
    1. SELECT TOP 页大小 *   
    2. FROM TestTable   
    3. WHERE (ID NOT IN   
    4. (SELECT TOP 页大小*页数 id   
    5. FROM 表   
    6. ORDER BY id))   
    7. ORDER BY ID   
    8. SELECT TOP 页大小 *   
    Sql代码   收藏代码
    1. FROM TestTable   
    2. WHERE (ID >   
    3. (SELECT MAX(id)   
    4. FROM (SELECT TOP 页大小*页数 id   
    5. FROM 表   
    6. ORDER BY id) AS T))   
    7. ORDER BY ID   
      

    ------------------------------------- 

     

    分页方案二:(利用ID大于多少和SELECT TOP分页) 

    语句形式: 

    Sql代码   收藏代码
    1. SELECT TOP 10 *   
    2. FROM TestTable   
    3. WHERE (ID >   
    4. (SELECT MAX(id)   
    5. FROM (SELECT TOP 20 id   
    6. FROM TestTable   
    7. ORDER BY id) AS T))   
    8. ORDER BY ID   
      

    ------------------------------------- 

    分页方案三:(利用SQL的游标存储过程分页) 

     

    Sql代码   收藏代码
    1. create procedure XiaoZhengGe   
    2. @sqlstr nvarchar(4000), --查询字符串   
    3. @currentpage int--第N页   
    4. @pagesize int --每页行数   
    5. as   
    6. set nocount on   
    7. declare @P1 int--P1是游标的id   
    8. @rowcount int   
    9. exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output   
    10. select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页   
    11. set @currentpage=(@currentpage-1)*@pagesize+1   
    12. exec sp_cursorfetch @P1,16,@currentpage,@pagesize   
    13. exec sp_cursorclose @P1   
    14. set nocount off   
      

    其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。 

    建议优化的时候,加上主键和索引,查询效率会提高。 

     

    通过SQL 查询分析器,显示比较:我的结论是: 

    分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 

    分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 

    分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用 

     

    在实际情况中,要具体分析。 

     

    (转http://qimo601.iteye.com/blog/1634748)

    展开全文
  • mysql中limit用法详解

    万次阅读 2018-05-12 15:56:11
    在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能,尽管语法逻辑很是怪异。这个功能就好比oracle里的rownum,但比mysql提供的这个...

    在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心, mysql已经为我们提供了这样一个功能,尽管语法逻辑很是怪异。这个功能就好比oracle里的rownum,但比mysql提供的这个LIMIT好用、好记和好理解多了,呵呵。

    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用法总结

    2020-12-07 10:24:02
    LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数,参数必须是一个整数常量。... 参考文章: 1.Mysql 分页语句Limit用法 2.MySQL使用Limit关键字限制查询结果的数量

     

    7. MySQL LIMIT 详解

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

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

    参数:

    • The offset 是返回集的初始标注,起始点是0,不是1哦
    • The count (rows)指定返回的数量(如图)

    1、查询第一行记录:

    select * from table limit 1 

    2、查询前n行记录 

    select * from table limit 0,n; 
    或 
    select * from table limit n; //如果只给定一个参数,它表示返回最大的记录行数目

    3、查询后n行记录 

    select * from table order by id desc limit n;//倒序排序,取前n行 id为自增形式 

    4、查询第n行记录

    select * from table limit n-1,1; // 返回第n行 

    select * from table limit 3,1; // 返回第4行 

    4、查询第n行到第m行记录

    select * from table limit n-1,m-n+1; 
    select * from table limit 5,10;返回第6行到第15行的记录 

    5、/检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:

    SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

    注:这种写法本身就是错的,虽然它可以在之前的版本中运行(低优先级),新版本的mysql对此做出了修复,现在的替代方法是第二个参数用一个较大的正数代替。

    比如你写个

    SELECT * FROM table LIMIT 95,10000; // 检索记录行 96-last.

    感觉这方法很蠢,然鹅我并没有更好的方法,呵呵

     

    附录:OFFSET

    为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
    经常用到在数据库中查询中间几条数据的需求
    比如下面的sql语句:
    selete * from testtable limit 2,1;
    selete * from testtable limit 2 offset 1;
    注意:
    1.数据库数据计算是从0开始的
    2.offset X是跳过X个数据,limit Y是选取Y个数据
    3.limit  X,Y  中X表示跳过X个数据,读取Y个数据
    这两个都是能完成需要,但是他们之间是有区别的:
    (1)是从数据库中第三条开始查询,取一条数据,即第三条数据读取,一二条跳过
    (2)是从数据库中的第二条数据开始查询两条数据,即第二条和第三条。

     

    参考文章:

    1.Mysql 分页语句Limit用法

    2.MySQL使用Limit关键字限制查询结果的数量

     

    展开全文
  • Mysql Limit用法

    2019-03-26 11:12:55
  • 详解MySQL中LIMIT的使用方法

    万次阅读 2018-09-11 17:14:53
    1、任务描述 搜索表结构中的某些部分的数据,比如,最后面三个,最前面三个,第2到8条记录,等等。 2、实战演练 一、select * from tablename order by orderfield desc/asc limit position, counter;...
  • MySQL limit用法详解

    2021-04-02 20:26:53
    limit是MySQL中常用的关键字,经常了order by连用,用来进行筛选数据,用法也很简单,但不太细心的人可能不知道limit的一些细微用法 select * from table_name limit start_rows,end_rows
  • 主要给大家介绍了关于MySQL limit使用方法以及超大分页问题解决的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • Mysql limit用法

    2020-11-22 20:23:20
    在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。 Sql代码 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset ...
  • mysql中limit的用法

    2021-09-05 18:23:25
    在mysql中已经为我们的分页查询提供了一定的便利-------limit关键字 limit n 这样获取的是查询结果集的前n条记录,可以用来查找最值。 limit n,m 这样查询的是n+1~n+m的记录(含头含尾),n是偏移量,m是记录条数。...
  • 使用退出标志退出线程 Interrupt方法结束线程 stop方法终止线程(线程不安全) 3,Java锁(部分内容) 乐观说 悲观锁 自旋锁 Synchronized同步锁 ReentrantLock 可重入锁(递归锁) 公平锁与非公平锁 ReadWriteLock...
  • 深入分析Mysql中limit的用法

    万次阅读 多人点赞 2019-02-22 16:33:42
    Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。 SELECT * FROM table LIMIT [offset], rows | rows ...
  • "limit N" 等价于" limit 0,N" 用法,标识检索前N行; 2.返回最前的那条记录 SELECT * FROM result ORDER BY c limit 1; 只返回第一条记录; 3.返回最后的一条记录 SELECT * FROM result ORDER ...
  • #直接看例子 SELECT * FROM table LIMIT 2,1; //跳过2条数据读取1条数据,即读取第3条数据 SELECT * FROM table LIMIT 2 OFFSET 1; //跳过1条数据读取2条数据,即读取第2和第3条数据
  • 首先我们先来看看这份Spring源码分析笔记 Spring源码分类的一览无余,详细清晰明了!让你分分钟把握! Spring源码分析笔记手册内容,共七个部分 第一部分Spring概述 Spring 简介 ...Spring Io
  • mysql limit和offset用法

    2021-08-30 15:37:32
    limit和offset用法 mysql里分页一般用limit来实现 1. select* from article LIMIT 1,3 2.select * from article LIMIT 3 OFFSET 1 上面两种写法都表示取2,3,4三条条数据 1. select* from article LIMIT 1,3 当...
  • Mysql中limit的用法详解

    2016-06-15 10:34:58
    Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。 SELECT * FROM table LIMIT [offset,] rows | rows ...
  • 太多了,有没有更方便的方法,有!它是谁?就是 limit ! limit 是用于限制查询结果返回的数量的。 2.基本用法 : select * from user limit ?,? 这里的 前一个 ?代表查询结果的索引值 ( !注意! 这个索引...
  • MySQL中limit的详细用法

    千次阅读 2020-04-15 15:45:55
    limit的详细用法 1、用于强制返回指定的记录数 在查询中,经常要返回前几条或者中间某几行数据时,用到limit 语法如下: select * from table_name limit [offset] rows 参数解释: offset:指定第一个返回...
  • 需求: 查询用户房间type为2的房间战绩排行榜 根据 主条件killNum做降序, 次条件scoreNum做降序,一个用户只能出现一次取其最高的数据 在同样环境,数据相同的情况下,查询出来的数据不同 纠结了许久 ...
  • postgresql和mysql中的limit使用方法

    千次阅读 2011-06-16 15:06:00
    在对数据进行分页时,我们经常需要在sql语句中使用limit。在msyql中,limit使用如下select *from mytable limit a,ba为起始值,从0开始,b为获取数据长度在查看有关“postgresql”的文章">postgresql中,limit使用...
  • mysql limit 和 offset用法

    2021-10-19 16:04:28
    limit和offset用法 mysql里分页一般用limit来实现 select * from article LIMIT 1,3 select * from article LIMIT 3 OFFSET 1 上面两种写法都表示取2,3,4三条条数据 当limit后面跟两个参数的时候,第一个数表示要跳...
  • 一、limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | `rows OFFSET ...
  • MySQL-分页查询(Limit用法

    千次阅读 2020-06-27 15:45:19
    对于比较多的数据,如果在一个页面全部显示,查看起来会... 实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。 持续更新之中...
  • MySQL中使用LIMIT进行分页的方法

    万次阅读 多人点赞 2018-02-02 16:15:45
    客户端通过传递start(页码),pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去...
  • MySQL 中LIMIT的使用详解

    万次阅读 多人点赞 2017-02-26 22:19:52
    使用数据库过程中,常会遇到查询或者导出某个数据表或者查询集的前几条或者后几条记录,LIMIT可以很好的满足需求。LIMIT基本语法:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset;例如, 如果只...
  • 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心, mysql 已经为我们提供了这样一个功能。 SELECT   *   FROM   table     LIMIT  [ offset, ]   rows  |...
  • MySQL中使用LIMIT分页

    2019-09-29 21:42:46
     我们知道MySQL提供了分页函数limit m,n,但是该函数的用法和需求不一样,所以就需要根据实际情况去改写以满足需求。分析如下:  查询第1条到第10条数据的sql是:select * from table limit 0,10;->对应...
  • MySQL Limit 分页优化

    千次阅读 2017-06-14 13:43:34
    在系统中需要进行分页的时候,我们通常会使用Limit加上偏移量的方法实现,问题来了,在偏移量非常大的时候,例如可能是limit 10000,10这样的查询,这时MySQL需要查询10010条记录然后只返回最后的10条,前面10000条...
  • https://blog.csdn.net/lvoelife/article/details/81943070

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
关键字:

mysqllimit用法

mysql 订阅