一个巨大的表 不是几万行,也不是几十万行,而是几千万行。
有时候你需要把所有数据全部读取出来 进行处理,可选的方式有以下几种
首先 这个表一定要有一个唯一索引,这个唯一索引是自增的或非严格自增的整数,否则到这个数量级,表的效率应该非常低。
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;
索引这东西非常强大,千万不要忘了合理利用.