Mysql Laravel一次更新多个记录

Mysql Laravel一次更新多个记录,mysql,laravel,performance,sql-update,Mysql,Laravel,Performance,Sql Update,我有一个mysql数据库表,有1000000条记录。我想每行更新一列 我试过了: public function methodWorking() { $properties = Property::with('requests')->get(); foreach ($properties as $property) { $property->number_of_request = count($property->requests);

我有一个mysql数据库表,有1000000条记录。我想每行更新一列

我试过了

public function methodWorking()
{
    $properties = Property::with('requests')->get();
    foreach ($properties as $property) {
        $property->number_of_request = count($property->requests);
        $property->save();
    }
}
这是一个工作,但它的性能非常差

我想写这样的代码:

public function methodExpect()
{
    $properties = Property::with('requests')->get();
    $property_array = [];
    foreach ($properties as $property) {
        $property->number_of_request = count($property->requests);
        $property_array[] = $property;
    }

    Property::save($property_array);
}
拉威尔有可能吗


谢谢。

据我所知,使用MySQL无法在一个查询中进行批量更新。您可以在循环中使用一些东西,如put
Property::save($Property\u array)在您的
foreach

有关更多详细信息,请参见更改所有(或大多数)行通常表示架构设计不佳。您想告诉我们该列包含哪些内容以及为什么需要进行大规模更改吗

考虑从表中删除该列,然后以其他方式提供该值

是的,
更新百万行表需要很长时间。这是因为每行的旧副本都保留在上,以防需要进行
回滚

要将表格分成可管理的部分,请参见

您可以使用它非常有用(在10000条记录上测试)