博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL在大数据Limit使用
阅读量:7029 次
发布时间:2019-06-28

本文共 911 字,大约阅读时间需要 3 分钟。

它已被用于Oracle一世。但今天,很惊讶,MySQL在对数量级的性能,甚至差距如此之大不同的顺序相同的功能。

看看表ibmng(id,title,info)  只要  id key 指数title

看看两个语句:

select * from ibmng limit 1000000,10

select * from ibmng limit 10,10

非常多人都会觉得不会有多大区别,可是他们都错了。区别太大了,(可能机器不同有点差距。但绝对10倍以上)详细运行时间留给好奇的同学。

这是为什么呢,都是offset的错!

优化的话你能够想方法减小offset,例如以下面:

Select * From ibmng Where id >=(

  Select id From ibmng Order By id limit 1000000,1
) limit 10

大家一定会看到问题, limit 1000000,1 相同offset不是一样大吗,肯定不能优化。

(可是,又错了,运行之后才知道结果!)

原因是id是索引,全部快,那么例如以下sql呢:

select id from ibmng where title='mysql' order by id limit 1000000,10; 

这条sql大家又会猜错。相同慢的跟蜗牛一样。

(在此大家都会想title加了索引啊怎么会这样!

接下来大家再运行一条sql例如以下:

select id from ibmng where title='mysql' limit 1000000,10; 

运行之后你会发现速度是sousou的快!

原因看出来了吧,都是用了索引的原因,假设你要用select id from ibmng where title='mysql' order by id limit 1000000,10; 那么就追加复合索引(title,id )对。

注意:然后和limit无关。

我现在终于回来了场面,假设统计数据的千万级别批量读单词,不要用limit最好的,使用主键范围最推断!

(eg:id<=1001000 and id>=1000001)

转载地址:http://lirxl.baihongyu.com/

你可能感兴趣的文章
【前端】HTML属性
查看>>
js 算法3
查看>>
【Java 容器面试题】谈谈你对HashMap 的理解
查看>>
分组圆角TableView
查看>>
高级Java研发者在解决大数据问题上的一些技巧
查看>>
用 Node 开发一个命令行版本词典--不到十行的代码
查看>>
支持多解码模块的安卓视频播放器AndroidVideoplayer
查看>>
TCP协议详解
查看>>
Node.js process 模块解读
查看>>
Lodash源码分析-compact.js
查看>>
度小满牵手南京银行打造”AI鑫”计划:银行零售业掀起变革运动
查看>>
微信小程序之分享海报生成
查看>>
敏捷AI|NLP技术在宜信业务中的实践「背景篇」
查看>>
布局结束检测工具
查看>>
[MetalKit]21-What's-new-in-graphics-and-games-at-WWDC-2016
查看>>
html2canvas在vue下的巨坑
查看>>
从设计师和开发的角度使用 lottie
查看>>
iOS之自定义tabBar
查看>>
Spring boot学习(三) Spring boot整合mybatis
查看>>
Redux 源码深度解析(附带视频1月14号上传)
查看>>