在马里亚德加快插入速度



如果有人能给我支持,请。

我的问题是:

我有一张有8个字段和大约510 000条记录的表。在web表单中,用户选择一个Excel文件,然后使用SimpleXLSX进行读取。该文件大约有34万行。使用PHP和SimpleXLSX库,该文件加载在内存中,然后使用for cicle逐行读取脚本,获取ecah行的一个数据并在表中搜索该值,如果数据存在于表中,则不插入该值,否则,读取的值存储在表中。

这个过程需要几天才能完成。

有人能建议我做一些手术来加快这个过程吗?

非常感谢。

  1. 如果你有很多用户,他们可能同时使用网络:
  • 您必须将SimpleXLSX更改为js.xlsx,在Web浏览器中完成所有工作,但只在服务器中写入数据库
  1. 如果您的用户很少(在这种情况下我认为是您(
and search this value in the table
  • 这是必须花费的时间,如果您的单对单比较内存和数据库,则添加/不添加到数据库
  • 这样您就可以读取内存中的所有数据库信息(必须使用哈希表进行比较(,然后比较所有
    并将其添加到内存中,最后标记为newable
    将内存信息添加到数据库中
  • 因为数据库和xls的计数最多,所以…数据库几乎没有值
  • 忘记数据库,这是内存中速度最快的
  • 内存中使用哈希表进行比较
  1. 当然,如果你能使用@Barmar的想法,你可以让上面的内容在数据库中运行。。不要插入单个,而是批量

关注将数据放入数据库的速度。不要试图在INSERT期间完成所有工作然后使用SQL查询来进一步清理数据。

使用最小XLS将XML获取到数据库中。如果您需要大量处理数据,请使用一些编程语言。XLS和SQL都不适合进行复杂的字符串操作。

如果可行,使用LOAD DATA ... XML加载数据;它非常快。

SQL非常适合同时处理整个表;一次处理一排太糟糕了。(因此,我建议将数据放入暂存表,而不是直接放入目标表。(

如果您想进一步讨论,我们需要更多有关转换的详细信息。

最新更新