mysql数据库,一次遍历全部几万条数据。怎么处理才好?

前提:有一个mysql数据库的表里有几万条记录,我现在写的一个php程序里有个循环结束的条件是,把这几万条记录从头到尾遍历一次。问题:我想知道,应该用什么方式使用这几万条... 前提:
有一个mysql数据库的表里有几万条记录,我现在写的一个php程序里有个循环结束的条件是,把这几万条记录从头到尾遍历一次。

问题:
我想知道,应该用什么方式使用这几万条记录程序最快,最省服务器资源?
是一次把几万条全取出来,在内存中做操作?
还是一次取一条?
或有没有其它好办法?
展开
 我来答
ibaoka
推荐于2017-10-10 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:75
采纳率:0%
帮助的人:81.3万
展开全部
其实就跟分页获取数据类似,网上这种例子就比较多了,分段获取你可以把当前获取的最大的自增id存储在文件、数据库或者memcache中,下一段用大于这个做条件,然后遍历完再更新这个数就行了。
追问
不用自增id来分段可否?

比如:上一段遍历保存的时间是:20130808001
表名是:t1
更新时间的字段名是:time

把t1表里的数据按time字段名排序
从t1表里的字段名time中找到20130808001这条记录,从这条开始取1000条记录

$t=20130808001;
SELECT * FROM t1 order by time DESC LIMIT $t,1000

求改正这句sql语句

谢谢
追答
时间是可以用,但是时间只能作为条件,你不存储自增id还是要存遍历的数字的
SELECT * FROM t1 where `time`>20130808001 order by time DESC LIMIT 1,1000
SELECT * FROM t1 where `time`>20130808001 order by time DESC LIMIT 1001,1000
……

另外强调一下,加了order by之后sql查询速度会明显下降,即便加了索引在大数据量的情况下还是会比较慢的。
百度网友13eda02
2013-08-07 · TA获得超过778个赞
知道小有建树答主
回答量:1048
采纳率:77%
帮助的人:382万
展开全部
  1. 如果总共就几万而且字段不多的话可以一次全取出来

  2. 如果几万笔记录还会迅速增长就需要分段了、应该有自增主键或者日期之类的过滤字段吧

追问
对,有个自增长的id主键,还有一个建立日期。

请问分段怎么做?有网上的学习网址吗?
如果想分几次做一次完整的遍历,下次再运行这个php的时候,有没办法,从上次的结尾的地方开始继续遍历?
谢谢
追答
分段就是有点类似分页,在后台逻辑就有点像递归算法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式