加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL PHP脚本减慢需求重构

发布时间:2021-01-24 23:28:35 所属栏目:MySql教程 来源:网络整理
导读:嗨,我有2个mysql表,它们都需要更新, companiesunique_code 公司拥有100万条记录,我需要为每条记录分配一个唯一的代码,我的问题是我的PHP脚本抓住了所有公司,并且在foreach循环中,从表unique_code中获取了唯一代码并进行更新,然后还将unique_code表更新为flag

嗨,我有2个mysql表,它们都需要更新,

companies
unique_code

公司拥有100万条记录,我需要为每条记录分配一个唯一的代码,我的问题是我的PHP脚本抓住了所有公司,并且在foreach循环中,从表unique_code中获取了唯一代码并进行更新,然后还将unique_code表更新为flag该代码已被使用.

PHP代码挂起了很长时间,并达到了最大执行限制.我真的很固执,需要这些公司拥有唯一的代码,有人可以考虑其他方法吗?

压缩代码示例.

 foreach ($aCompanies as $companies){

   $query="SELECT * FROM unique_code WHERE used = 0"

   foreach(unique_code as code){
       //  UPdate companies table
       $query = "UPDATE companies SET id = $code";
       // Flag code used
       $query = "UPDATE unique_codes WHERE code = $code";
   }
}

为您的时间加油.

完整的代码:

$query1 = "SELECT code FROM unique_codes WHERE used = 0n";
$aUniqueCode = $oDbh->getAll($query1);

$query2 = "SELECT id FROM companies";
$aCompanies = $oDbh->getAll($query2);

foreach ($aCompanies as $companies){

    $query = "SELECT code FROM unique_codes WHERE used = '0' LIMIT 1";
    $oCode = $oDbh->getRow($query);

    $query3.= "UPDATE companies SET code = $oCode->code WHERE id = $companies->idn";   

    $query4 = "UPDATE unique_codes SET used = '1' WHERE code = $oCode->coden";
    $oDbh->query($query4);      
}
print print_r($query3).';';
exit;

我正在做的是不更新将所有SQL导出到文件的公司,以便以后可以导入. 最佳答案 如果您只是想向表中添加新的主键(因此需要一个一次性过程),则不要在PHP中进行.直接使用MySQL并使用alter table完成工作. MySQL将直接更快,并且不会遇到像PHP这样的长进程的时序问题.

如果您尝试做其他事情,则可能需要建立更多的表模式,对我来说,我是否有正确的目标还不是很清楚.

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读