从一个巨大的mysql表中取出全部数据的方法

一个巨大的表 不是几万行,也不是几十万行,而是几千万行。

有时候你需要把所有数据全部读取出来 进行处理,可选的方式有以下几种

首先 这个表一定要有一个唯一索引,这个唯一索引是自增的或非严格自增的整数,否则到这个数量级,表的效率应该非常低。


1 直接读每次limit 10000,实践证明 1千万行 你可能需要读一星期,前面的比较块,后面每读一次需要10分钟.

select *from table limit start ,10000

2 把数据dump出来,然后对文本文件处理,有点速度比较快,缺点 结构化数据存在的文本中有被破坏的风险,且对文本分析的正确性依赖于你程序的水平.

3 你可以通过按索引查询,然后limit来取

 select *from table where id>start limit 10000;

至于为什么快,可以了解下索引相关知识。


4  如果id是连续的,你可以如4做,实验证明betwwen比 3快。

select *from table where id between start and end;

索引这东西非常强大,千万不要忘了合理利用.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值