我正在尝试(每晚)将数据从旧系统中导出到更易于编写代码的地方;但是,导出的数据量为MASSIVE。
我将数据转储为JSON对象,然后尝试使用Laravel进行updateOrCreate(),但是我有太多数据。通常将所有数据处理到250万个MySQL行中大约需要10个小时。
我认为它很慢,因为它实际上正在执行500万个查询。
有谁知道如何使用Laravel有效执行MASSIVE updateOrCreate()的好例子?
最佳答案
可能很多情况取决于确切的数据,但我会尝试使用数据包。因此,您首先要从JSON中获取500条数据记录,然后手动运行500条查询以验证数据是否存在。
对于存在的那些,您将为它们中的每一个运行更新,但是对于不存在的那些,您不会立即将它们插入,而是将它们放入数组中,然后按如下方式批量插入:
DB::table('your_table')->insert($records);
您应该确保没有太多或更少的记录,以尽可能地加快该过程。
通常,批量插入可以大大提高您的操作速度,但是一切都取决于您拥有的数据以及放置这些数据的确切算法。