我有大約80k記錄,我需要每天多次運行插入/更新腳本。Laravel - 批量插入重複密鑰更新大型數據集
INSERT INTO `my_rankings` (`id`, `rank`) VALUES (1,100),(2,99)(3,102)...(80000,3)
ON DUPLICATE KEY UPDATE `rank` = values(`rank`);
這些記錄是目前陣列形式:
$rankings = [
['id' => 1, 'rank' => 100],
['id' => 2, 'rank' => 99],
['id' => 3, 'rank' => 102],
...
['id' => 80000, 'rank' => 3],
]
是否有一個很好/高性能的方式,我可以運行上述更新查詢?
我看過Eloquent的Model::updateOrCreate(...)
。但我不認爲我可以使用這個批量插入/更新。
我想避免在我的$rankings
數組上使用foreach
並插入/更新單個記錄,因爲腳本將花費太長時間。
我對https://stackoverflow.com/a/34815725/1239122以下的這個問題有個答案,但是它遠非優雅。
感謝這一點,但仍然非常緩慢。花費2分鐘時間處理80k條記錄,即使我將「$ bajillionRecords」分塊。 – Gravy
您是否找到任何解決方案? –