Limit操作:

select * from table LIMIT 5,10;   #返回第6-15行数据
select * from table LIMIT 5;      #返回前5行
select * from table LIMIT 0,5;    #返回前5行

性能优化:

基于MySQL5.0中limit的高性能,我对数据分页也重新有了新的认识.
测试SQL语句1:
Select * From cyclopediaWhere ID>=(Select Max(ID)From (Select ID From cyclopedia Order By ID limit 90001) As tmp) limit 100;

测试SQL语句2:

Select * From cyclopediaWhere ID>=(Select Max(ID)From (Select ID From cyclopedia Order By ID limit 90000,1) As tmp) limit 100;

测试说明:
同样是取90000条后100条记录,第1句快还是第2句快?
第1句是先取了前90001条记录,取其中最大一个ID值作为起始标识,然后利用它可以快速定位下100条记录
第2句择是仅仅取90000条记录后1条,然后取ID值作起始标识定位下100条记录
测试结果-时间:
第1句执行结果.100 rows in set (0.23) sec
第2句执行结果.100 rows in set (0.19) sec

很明显第2句胜出.看来limit好像并不完全像我之前想象的那样做全表扫描返回limit offset+length条记录,这样看来limit比起MS-SQL的Top性能还是要提高不少的.

其实第2句完全可以简化成

Select * From cyclopediaWhere ID>=(Select ID From cyclopedia limit 90000,1)limit 100;

讲解说明:
  1.直接利用第90000条记录的ID,不用经过Max运算,这样做理论上效率因该高一些,但在实际使用中几乎看不到效果,因为本身定位ID返回的就是1条记录,Max几乎不用运作就能得到结果,但这样写更清淅明朗,省去了画蛇那一足.

  2.可是,既然MySQL有limit可以直接控制取出记录的位置,为什么不干脆用Select * From cyclopedia limit 90000,1呢?岂不更简洁?
这样想就错了,试了就知道,结果是:1 row in set (8.88) sec,怎么样,够吓人的吧,让我想起了昨天在4.1中比这还有过之的"高分".Select * 最好不要随便用,要本着用什么,选什么的原则, Select的字段越多,字段数据量越大,速度就越慢. 上面2种分页方式哪种都比单写这1句强多了,虽然看起来好像查询的次数更多一些,但实际上是以较小的代价换取了高效的性能,是非常值得的.

  3.第1种方案同样可用于MS-SQL,而且可能是最好的.因为靠主键ID来定位起始段总是最快的.

MS-SQL的TOP:

Select Top 100 * From cyclopediaWhere ID>=(Select Top 90001 Max(ID)From (Select ID From cyclopedia Order By ID) As tmp
) 

top介绍:

  但不管是实现方式是存贮过程还是直接代码中,瓶颈始终在于MS-SQL的TOP总是要返回前N个记录,这种情况在数据量不大时感受不深,但如果成百上千万,效率肯定会低下的.相比之下MySQL的limit就有优势的多.

测试SQL语句1:

Select ID From cyclopedia limit 90000

测试SQL语句2:

Select ID From cyclopedia limit 90000,1

测试结果-时间:
  90000 rows in set (0.36) sec
  1 row in set (0.06) sec
而MS-SQL只能用

Select Top 90000 ID From cyclopedia

执行时间是390ms,执行同样的操作时间也不及MySQL的360ms. 
本文出自:http://www.zhenhua.org/article.asp?id=200

转载于:https://www.cnblogs.com/wkrbky/p/6101753.html

Mysql的“Limit”操作相关推荐

  1. mysql的limit性能优化

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

  2. MySQL的limit用法和分页查询的性能分析及优化

    一.limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMI ...

  3. mysql time_limit_mysql ---- limit使用方式

    随着偏移量的增加,limit语句的执行会更加耗时,那么这是为什么呢? 随着偏移量的增加,limit语句的执行会更加耗时,那么这是为什么呢? 在业务中实现分页功能就离不了MySQL的limit语句,而随 ...

  4. mysql分页limit运算,MySQL的limit分页查询及性能问题

    MySQL 通过 limit 实现分页查询.limit 接收一个或两个整数型参数.如果是两个参数,第一个指定返回记录行的偏移量,第二个指定返回记录行的最大数目.初始记录行的偏移量是 0.为了与 Pos ...

  5. mysql opti_MySQL基础操作

    查看帮助:? 关键词 如 ? trigger 一.Mysql常用基础操作 1.mysql表复制 1) create table t2 like t1;   --复制表结构,t2与t1表结构一致 2) ...

  6. MySQL的Limit性能问题

    目录 问题 优化思想 解决 优化原理 MySQL的分页查询通常通过limit来实现. MySQL的limit基本用法很简单.limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返回记录 ...

  7. mysql limit分页知乎_头发一天天的掉,你知道MySQL的Limit有性能问题吗?

    你知道MySQL的Limit有性能问题吗? MySQL的分页查询通常通过limit来实现. MySQL的limit基本用法很简单.limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返 ...

  8. 要想通过面试,MySQL的 Limit 子句底层原理你不可不知

    点击关注公众号,实用技术文章及时了解 来源:liuchenyang0515.blog.csdn.net/article/ details/120727513 文章目录 老样子,建个表 从sql执行计划 ...

  9. mysql分页总页数算法解析_详解MySQL的limit用法和分页查询语句的性能分析

    limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT ...

最新文章

  1. java.lang.NoSuchMethodException 错误
  2. 然后Denton et al, 2015 搞出了非常NB的改进版本
  3. W3C 战败:无权再制定 HTML 和 DOM 标准!
  4. Ubuntu14.04下安装eclipse
  5. 国二c语言改错题答案,c语言国二考试编程题答案
  6. Elasticsearch Metric Aggregation指标聚合详解
  7. python3精要(42)-异步生成器
  8. 【Python的黑魔法】实例方法、静态方法和类方法
  9. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_04-freemarker基础-基础语法种类...
  10. Go实现PHP常用方法
  11. 七月算法机器学习1 机器学习初识
  12. html手机弧线div,纯css实现让div的四个角成弧形
  13. python自己制作视频_你还在为看电影发愁?Python制作全网视频播放工具!
  14. 金蝶软件各版本安装包下载地址(即时更新)
  15. hadoop初体验——WordCount实例
  16. 电商后台管理系统订单列表模块
  17. python安装第三方库的方法
  18. Visual Assist 配色
  19. php下雨效果源码,ps下雨效果制作步骤
  20. 百度网盘加速无限试用_单次付费来了!百度网盘推出3元/5分钟加速下载服务

热门文章

  1. 根据数据建立分析模型是什么意思
  2. r语言 面板数据回归_R语言——伍德里奇计量经济导论案例实践 第十三章 横截面与面板数据(一)...
  3. 前后端分离项目部署(服务器或本地)
  4. 《数据库SQL实战》查找employees表
  5. Linux 修改主机名 和 ip 映射关系
  6. sklearn处理文本和分类属性的方式
  7. Velocity浅析及与Jsp、Freemarker对比
  8. elasticsearch Insert 插入数据和delete 删除数据(Java)
  9. spark运行时加载hive,hdfs配置文件
  10. 装饰器 -- 函数装饰器(tornado异常响应装饰器)