作者carlcarl (carl)
看板PHP
标题Re: [请益] 如何减少 写入 资料库的时间
时间Thu Aug 11 03:39:26 2011
※ 引述《dj31416 (失望带点绝望)》之铭言:
: 我是自学PHP的新手
: 程式流程大约
: 是
: 回圈(1.更新a资料表最後一笔资料->2.取出全部资料全部写入b资料表->计算->输出->
: 删除b资料表)
: 如此重复大约一千次 资料数约一千笔
: 这样要花掉大约10分钟的时间
: 若不做资料表更新 单纯取出资料表b所有资料计算一千次 却非常快速
: 本来以为是输出的问题 但取消所有的输出 只有做计算 时间也差不多
: 不知道是不是更新(写入)资料库很耗时间 想知道有没有解决的方法
: 谢谢 :)
我觉得可以看的地方
1. 更新的部分 搜寻有没有根据索引之类的
2. 写入的部分是一次写入1000笔还是1000次1笔
根据我之前看官方的文件 1百万笔资料 一次输入一笔 改成一次输入16笔
时间可以从765秒冲到50秒 关键字: Batching operations
另外有点不太懂 後面计算的部分是在计算哪个资料表的资料
a更新完後 直接拿出a表的资料作计算就好啦? 为什麽会用到b资料表?
因为看起来你的b资料表好像没啥用..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.47.66.139
1F:→ dj31416:谢谢原po的关键字 我是一千次一笔 资料表b是逐笔写入 08/11 04:17
2F:→ dj31416:资料表a的计算结果 最後再利用资料表b的数据 再做一次计 08/11 04:18
3F:→ dj31416:算 不知道这样处理正不正确 因为资料表a是读取csv写入的 08/11 04:19
4F:→ dj31416:的原始data 一方面想说不要去更动 才有写入另一资料表(b) 08/11 04:19
5F:→ dj31416:的想法 08/11 04:19
6F:推 LaPass:CSV!? ( ̄□ ̄|||)a 怎麽会有这个东西? 08/11 04:21
7F:→ dj31416:Opps!! 我还以为自己打错字 可是我的档案是.csv没错耶yo! 08/11 04:25
8F:→ dj31416:读取csv写入资料表a 很快 就是後面的计算再写入 要等好久 08/11 04:27
9F:推 LaPass:因为一开始会认为你是连线到资料库去作操作,但现在看起来 08/11 04:28
10F:→ LaPass:,好像是用PHP读取档案来作计算的样子? 08/11 04:28
11F:→ carlcarl:为什麽不直接拿a的计算结果直接再做一次计算? 08/11 04:29
12F:→ dj31416:喔喔不不! 那个在计算前就已经都做好了 我分两步做 08/11 04:30
13F:→ carlcarl:而要存到b之後再读出来再做一次计算? 08/11 04:30
14F:→ dj31416:所以应该是连线到资料库因为我一直输入mysql_query:)是吗? 08/11 04:30
15F:→ dj31416:对 要用b记录的结果 再做一次计算 08/11 04:31
16F:→ carlcarl:可是你b的资料表不就是从a的计算结果来的吗 08/11 04:38
17F:→ carlcarl:那为何不乾脆用php计算完a的计算结果後 再算一次就好? 08/11 04:39
18F:→ dj31416:对耶! 我怎麽转不过来! 先存入array再全部一次写入 应 08/11 04:51
19F:→ dj31416:该就会快多了 好兴奋喔!! :D 08/11 04:51