Mysql的“Limit”操作
Limit操作:
select * from table LIMIT 5,10; #返回第6-15行数据 select * from table LIMIT 5; #返回前5行 select * from table LIMIT 0,5; #返回前5行
性能优化:
测试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;
第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就有优势的多.
Select ID From cyclopedia limit 90000
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
转载于:https://www.cnblogs.com/wkrbky/p/6101753.html
Mysql的“Limit”操作相关推荐
- mysql的limit性能优化
MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...
- MySQL的limit用法和分页查询的性能分析及优化
一.limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMI ...
- mysql time_limit_mysql ---- limit使用方式
随着偏移量的增加,limit语句的执行会更加耗时,那么这是为什么呢? 随着偏移量的增加,limit语句的执行会更加耗时,那么这是为什么呢? 在业务中实现分页功能就离不了MySQL的limit语句,而随 ...
- mysql分页limit运算,MySQL的limit分页查询及性能问题
MySQL 通过 limit 实现分页查询.limit 接收一个或两个整数型参数.如果是两个参数,第一个指定返回记录行的偏移量,第二个指定返回记录行的最大数目.初始记录行的偏移量是 0.为了与 Pos ...
- mysql opti_MySQL基础操作
查看帮助:? 关键词 如 ? trigger 一.Mysql常用基础操作 1.mysql表复制 1) create table t2 like t1; --复制表结构,t2与t1表结构一致 2) ...
- MySQL的Limit性能问题
目录 问题 优化思想 解决 优化原理 MySQL的分页查询通常通过limit来实现. MySQL的limit基本用法很简单.limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返回记录 ...
- mysql limit分页知乎_头发一天天的掉,你知道MySQL的Limit有性能问题吗?
你知道MySQL的Limit有性能问题吗? MySQL的分页查询通常通过limit来实现. MySQL的limit基本用法很简单.limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返 ...
- 要想通过面试,MySQL的 Limit 子句底层原理你不可不知
点击关注公众号,实用技术文章及时了解 来源:liuchenyang0515.blog.csdn.net/article/ details/120727513 文章目录 老样子,建个表 从sql执行计划 ...
- mysql分页总页数算法解析_详解MySQL的limit用法和分页查询语句的性能分析
limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT ...
最新文章
- java.lang.NoSuchMethodException 错误
- 然后Denton et al, 2015 搞出了非常NB的改进版本
- W3C 战败:无权再制定 HTML 和 DOM 标准!
- Ubuntu14.04下安装eclipse
- 国二c语言改错题答案,c语言国二考试编程题答案
- Elasticsearch Metric Aggregation指标聚合详解
- python3精要(42)-异步生成器
- 【Python的黑魔法】实例方法、静态方法和类方法
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_04-freemarker基础-基础语法种类...
- Go实现PHP常用方法
- 七月算法机器学习1 机器学习初识
- html手机弧线div,纯css实现让div的四个角成弧形
- python自己制作视频_你还在为看电影发愁?Python制作全网视频播放工具!
- 金蝶软件各版本安装包下载地址(即时更新)
- hadoop初体验——WordCount实例
- 电商后台管理系统订单列表模块
- python安装第三方库的方法
- Visual Assist 配色
- php下雨效果源码,ps下雨效果制作步骤
- 百度网盘加速无限试用_单次付费来了!百度网盘推出3元/5分钟加速下载服务
热门文章
- 根据数据建立分析模型是什么意思
- r语言 面板数据回归_R语言——伍德里奇计量经济导论案例实践 第十三章 横截面与面板数据(一)...
- 前后端分离项目部署(服务器或本地)
- 《数据库SQL实战》查找employees表
- Linux 修改主机名 和 ip 映射关系
- sklearn处理文本和分类属性的方式
- Velocity浅析及与Jsp、Freemarker对比
- elasticsearch Insert 插入数据和delete 删除数据(Java)
- spark运行时加载hive,hdfs配置文件
- 装饰器 -- 函数装饰器(tornado异常响应装饰器)