gpt4 book ai didi

php - 比 foreach 更快的查询

转载 作者:行者123 更新时间:2023-11-29 20:13:39 25 4
gpt4 key购买 nike

我有一个简单的任务,将 id 从一个表更新到另一个表。然而我当前的解决方案非常慢并且同时使用 php 和 mysql 运行。Sector 表大约有 9000 条记录,源表有 1700 万条记录。$sector->code 是一个 varchar

到目前为止我得到了这个:

foreach(Sector::orderBy('id','DESC')->get() as $sector){
DB::select(DB::raw("UPDATE `sources` SET `sector_id` = $sector->id WHERE `sector` = '$sector->code'"));
}

每个部门大约需要一分钟,如果运行所有部门将在一周内完成......这不是一个选择。

最佳答案

首先,数据库应该有索引。 17Mil 条目需要有一个扇区索引。这意味着对于每个扇区,仅检查与该扇区匹配的记录子集。

其次,这应该可以在单个查询中实现。

UPDATE `sources`,`sector` SET `sources`.`sector_id` = `sector`.`id` 
WHERE `sources`.`sector` = `sector`.`code`;

这会停止表的多次转换,并且还会加快更新速度。

引用文献:- MySql : Update syntax - 如何在mySql中进行多表查询。

关于php - 比 foreach 更快的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39930938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com