目前有7张表,每张表的都含有近百万条数据,现在需要七张表联表导出至excel
请问有没有比较高效的方法???
写个脚本循环读取然后写入文件吧,每次批量读取并批量写入,尽量减少所需执行的SQL数。
你需要理解耗时长是受哪方面影响,在大量数据情况下,实际上最收影响的应该是数据库的IO速度,会极大的限制你的脚本整体速度,其次是机器的性能(当然其实百万数据不算大)
1 回答4.2k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答853 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.3k 阅读
1 回答717 阅读✓ 已解决
首先,思路楼上都有了。
这个脚本一定不要在apache下运行,有超时和内存限制,并且也不方便调试和查看。这个脚本独立运行,这种运行方式也成为常驻内存方式运行,因而这种方式一定要注意内存回收,不然运行一段时间后就会因为内存不足而退出脚本。
这里在重复一遍思路。
循环脚本,分块逐步取出并写入excel。这是单个进程单线程思路。如果觉得速度不够快,可以开启多进程。每个进程独立运行,可以设置每个进程起始位置不同,这样理论上时间会减少到(1/进程数量 )*原时间。
一般情况下,建议多进程而非多线程。因为PHP多线程采用的PHP和我们常用的PHP不同。一般常用的是非线程安全版。而使用线程必须使用线程安全版。