MySQL大数据下Limit使用

标签: mysql 大数据 limit | 发表时间:2014-07-27 20:54 | 作者:u014363151
出处:http://blog.csdn.net

对于一直用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)

作者:u014363151 发表于2014-7-27 12:54:54 原文链接
阅读:0 评论:0 查看评论

相关 [mysql 大数据 limit] 推荐:

MySQL大数据下Limit使用

- - CSDN博客推荐文章
对于一直用Oracle的我,今天可是非常诧异,MySQL中同一个函数在不同数量级上的性能居然差距如此之大. 先看表ibmng(id,title,info)  唯一  id key 索引title. 很多人都会认为不会有多大差别,但是他们都错了,差别太大了,(可能机器不同有点差距,但绝对10倍以上)具体执行时间留给好奇的同学.

MySQL 优化Limit分页

- - CSDN博客数据库推荐文章
     很多时候、我们需要选择出从指定位置开始的指定行数、此时、limit笑了.      对于limit的定义是:.      表示从第x行开始选择y条记录.      在业务需要分页操作的时候、我们通常采用limit+order by这对洗剪吹组合、高端洋气上档次.      然而、当翻到非常靠后的页面时、MySQL需要花费大量的时间来扫描需要丢弃的数据.

mysql order by和limit共用bug

- - 数据库 - ITeye博客
 在mysql下执行没有问题,可以得到预期结果. 但是用jdbc执行的时候就得不到预期结果了. 官网地址:http://bugs.mysql.com/bug.php?id=32933. 以下转载:http://bbs.chinaunix.net/thread-1276235-1-1.html. 我想从一个表中检索所有标题含有“中国”的数据,将它们按id排序,取前5条,所以我写了以下语句.

MYSQL分页limit速度太慢优化方法

- - OurMySQL
   在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦.    当一个表数据有几百万的数据的时候成了问题.    如 * from table limit 0,10 这个没有问题 当 limit 200000,10 的时候数据读取就很慢,可以按照一下方法解决.

【ActiveMQ Tuning】Prefetch Limit

- - 博客园_首页
   摘要:ActiveMQ优化 客户端优化 预取限制. 原文: http://fusesource.com/docs/broker/5.4/tuning/GenTuning-Consumer-Prefetch.html. Overview:图列4.1阐明了Broker在等待之前发送给客户端消息的反馈的行为.

Mysql 大数据操作状态查询

- - SegmentFault 最新的文章
这种时候我们就应该祭出一些方法了,在这里我总结一下我查到的资料. 在mysql中执行这个语句后,就能显示出mysql正在执行和处理哪些语句,以及相应的其他信息. Id: 40 User: root Host: localhost db: dbname Command: Query Time: 2061 State: Sending data Info: insert into table t1(*) select * from t2.

MySQL大数据量主库如何部署从库

- - OurMySQL
我们在部署MySQL Replication从库时,通常是一开始就做好一个从库,然后随着业务的变化,数据也逐渐复制到从服务器. 但是,如果我们想对一个已经上线较久,有这大数据量的数据库部署复制从库时,应该怎么处理比较合适呢. 本文以我近期所做Zabbix数据库部署MySQL Replication从库为例,向大家呈现一种新的复制部署方式.

关于mysql大数据分页的一些方法。

- - CSDN博客编程语言推荐文章
select * from user  limit 0,10;   这种最普通的方法在数据量不大的时候是没问题的. 当数据量大于100W的时候 ,就要 select * from user limit 1000000,10 ;  此时数据库. 要先扫过前面的100W条记录,再来取10条,所以当数据量越来越大的时候,速度也会越来越慢.

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

- - 数据库 - ITeye博客
利用MySQL数据库如何解决大数据量存储问题. 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开关量历史数据表,这两张表字段设计的很简单(OrderNo,Value,DataTime). 基本上每张表每天可以增加几千万条数据,我想问如何存储数据才能不影响检索速度呢.

30个MySQL千万级大数据SQL查询优化技巧详解

- - IT瘾-tuicool
本文总结了30个mysql千万级大数据SQL查询优化技巧,特别适合大. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0.