如果有人能给我支持,请。
我的问题是:
我有一张有8个字段和大约510 000条记录的表。在web表单中,用户选择一个Excel文件,然后使用SimpleXLSX进行读取。该文件大约有34万行。使用PHP和SimpleXLSX库,该文件加载在内存中,然后使用for cicle逐行读取脚本,获取ecah行的一个数据并在表中搜索该值,如果数据存在于表中,则不插入该值,否则,读取的值存储在表中。
这个过程需要几天才能完成。
有人能建议我做一些手术来加快这个过程吗?
非常感谢。
- 如果你有很多用户,他们可能同时使用网络:
- 您必须将SimpleXLSX更改为js.xlsx,在Web浏览器中完成所有工作,但只在服务器中写入数据库
- 如果您的用户很少(在这种情况下我认为是您(
and search this value in the table
- 这是必须花费的时间,如果您的单对单比较内存和数据库,则添加/不添加到数据库
- 这样您就可以读取内存中的所有数据库信息(必须使用哈希表进行比较(,然后比较所有
并将其添加到内存中,最后标记为newable
将内存信息添加到数据库中 - 因为数据库和xls的计数最多,所以…数据库几乎没有值
- 忘记数据库,这是内存中速度最快的
- 内存中使用哈希表进行比较
- 当然,如果你能使用@Barmar的想法,你可以让上面的内容在数据库中运行。。不要插入单个,而是批量
关注将数据放入数据库的速度。不要试图在INSERT
期间完成所有工作然后使用SQL查询来进一步清理数据。
使用最小XLS将XML获取到数据库中。如果您需要大量处理数据,请使用一些编程语言。XLS和SQL都不适合进行复杂的字符串操作。
如果可行,使用LOAD DATA ... XML
加载数据;它非常快。
SQL非常适合同时处理整个表;一次处理一排太糟糕了。(因此,我建议将数据放入暂存表,而不是直接放入目标表。(
如果您想进一步讨论,我们需要更多有关转换的详细信息。