MySQL在大数据Limit使用

它已被用于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)

时间: 2024-10-07 00:40:14

MySQL在大数据Limit使用的相关文章

mysql jdbc大数据

ps = (PreparedStatement) con.prepareStatement("select * from bigTable", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ps.setFetchSize(Integer.MIN_VALUE); ps.setFetchDirection(ResultSet.FETCH_REVERSE); mysql 处理大数据 原文地址:https://www.cnb

解决Mysql导入大数据出现gone away的问题

在用Mysql Yog或者PHPMyadmin等工具导入数据量大的sql文件时,会提示"gone away",那么如何处理这个问题尼? 在Mysql对应的配置文件中my.ini文件中加入以下配置: #solution MySQL server has gone away max_allowed_packet=500M wait_timeout=288000 interactive_timeout = 288000

[转载] 利用flume+kafka+storm+mysql构建大数据实时系统

原文: http://mp.weixin.qq.com/s?__biz=MjM5NzAyNTE0Ng==&mid=205526269&idx=1&sn=6300502dad3e41a36f9bde8e0ba2284d&key=c468684b929d2be22eb8e183b6f92c75565b8179a9a179662ceb350cf82755209a424771bbc05810db9b7203a62c7a26&ascene=0&uin=Mjk1ODMy

mysql在大数据量下性能调优相关参数

摘自http://blog.csdn.net/nightelve/article/details/17393631 一.thread_concurrency,默认的8 thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况.thread_concurrency应设为CPU核数的2倍. 比

mysql 导入大数据sql文件

导出Sql文件 在导出时合理使用几个参数,可以大大加快导入的速度. -e 使用包括几个VALUES列表的多行INSERT语法; –max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小; –net_buffer_length=XXX TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行 注意:max_allowed_packet和net_buffer_length不能比目标数据库的配置数值大,否则可能出错. 例子: mysql>my

阿里云Mysql导入大数据文件

1.查询数据到CSV文件 select * from account into outfile '/root/account.csv' fields terminated by ',' enclosed by '"' lines terminated by '\r\n' 注意:可通过终端方式查询或者服务器上连接数据查询所得. 2.将大文件数据(SQL)导入到服务器 scp -P 端口号 -i 私钥绝对路径地址 数据存放的绝对路径 [email protected]:/tmp/ 3.导入数据 lo

利用flume+kafka+storm+mysql构建大数据实时系统

架构图 数据流向图 1.Flume 的一些核心概念: 2.数据流模型 Flume以agent为最小的独立运行单位.一个agent就是一个JVM.单agent由Source.Sink和Channel三大组件构成,如下图: Flume的数据流由事件(Event)贯穿始终.事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source,比如上图中的Web Server生成.当Source捕获事件后会进行特定的格式化,然后Source会把事件

MySQL数据库如何解决大数据量存储问题

利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开关量历史数据表,这两张表字段设计的很简单(OrderNo,Value,DataTime).基本上每张表每天可以增加几千万条数据,我想问如何存储数据才能不影响检索速度呢?需不需要换oracle数据库呢?因为我是数据库方面的新手,希望可以说的详细一点,万分感谢!!?-0-#暂时可以先考虑用infobri

什么是大数据?如何成为大数据的技术大牛?

其实大数据并不是一种概念,而是一种方法论.简单来说,就是通过分析和挖掘全量的非抽样的数据辅助决策.大数据可以实现的应用可以概括为两个方向,一个是精准化定制,第二个是预测.比如像通过搜索引擎搜索同样的内容,每个人的结果却是大不相同的.再比如精准营销.百度的推广.淘宝的喜欢推荐,或者你到了一个地方,自动给你推荐周边的消费设施等等. 目前市场对大数据相关人才的需求与日俱增,岗位的增多,也导致了大数据相关人才出现了供不应求的状况,从而引发了一波大数据学习的浪潮.大家可以先了解一下关于大数据相关的岗位分类