Laravel:MASSIVE updateOrCreate()

时间:2017-07-25 21:43:31

标签: php mysql laravel laravel-5 laravel-5.4

我试图将数据(每晚)从古老的系统中导出为更容易编写代码的东西;但是,导出的数据量很大。

我将数据转储为JSON对象,然后尝试使用Laravel updateOrCreate(),但我的数据太多了。将所有数据处理到 2.5百万 MySQL行中通常需要大约10个小时。

我认为它很慢,因为它实际上执行了500万次查询。

有没有人知道如何使用Laravel有效执行MASSIVE updateOrCreate()的任何好例子?

1 个答案:

答案 0 :(得分:0)

可能很多依赖于确切的数据,但我会尝试使用数据包。因此,您首先从JSON获取500个数据记录,然后手动运行500个查询以验证数据是否存在。

对于那些存在的用户,您可以为每个用户运行更新,但对于那些不存在的用户,您不能立即将它们插入到阵列中,然后将它们按批量插入,如下所示:

DB::table('your_table')->insert($records);

你应该确保你没有太多的记录或者太少,以尽可能地加快这个过程。

一般来说,批量插入可以大大加快您的操作速度,但一切都取决于您拥有的数据以及放置这些数据的确切算法。