一个数据表约有2万个记录,我用循环一条一条的去把一个字段的值改为另一个,居然要20多分钟,他慢了,不知道是什么原因,大家能给个解释吗?

解决方案 »

  1.   

    1、建立合理的索引 2、优化SQL才2万条记录不至于这么慢
      

  2.   

    改后的值都一样么?楼主把sql语句和程序贴出来
      

  3.   

    是 update xxx 慢,
    还是你自己的程序慢,贴出来看一下。否则没办法分析。
      

  4.   

    function actionMoveIsOut(){
    $sql = 'select aid,type,is_out from job_resume_base';
    $rst = $this->md->db->runsql($sql);

    $mdResumeSearch = new job_ResumeForSearchM();
    $i = 1;
    foreach($rst as $k => $v){
    $mdResumeSearch->update("type={$v['type']},is_out={$v['is_out']} where aid={$v['aid']}");
    echo "$i<br>";
    $i++;
    }
    }表结构如下:
      id  aid  resume_id  type  is_out  created
    原来表里的type 和 is_out都是0,改成0或1
      

  5.   

    我估计是我的update里的where里的问题,我没有给aid建索引
      

  6.   

    为什么不直接用一句UPDATE来实现呢?
      

  7.   

    $mdResumeSearch->update("type={$v['type']},is_out={$v['is_out']} where aid={$v['aid']}");的后台代码是什么?更新的哪张表? 表结构是什么?利用下面语法
    update t1 inner join t2 on t1.id=t2.id 
    set t1.col=t2.colx
    where ...
      

  8.   

    从job_resume_base更新到job_resume_for_search,两表的字段相同,你说的方法可行,谢谢