数据库表字段更新问题

有两张表,表A和表B,A表有20个字段,B表有20个字段,A表和B表前19个字段完全一样,A表第20个字段为空,B表第20个字段有值,现在,我们需要将B表的最后一个字段值,一一对应更新到A表中,传统的update执行速度太慢,总共140多万的数据,根本执行不动,有什么好的办法吗?

UPDATE A
SET A.ECID=(
SELECT B.ECID
FROM B
WHERE A.ID=B.ID

WHERE EXIST
SELECT 1
FROM B
WHERE A.ID=B.ID

这样的写法执行速度慢到爆炸!求一个高效率的方法

你需要为该字段建立一个索引,再进行尝试。

调用存贮过程。
DELIMITER $$

USE 数据库名$$

DROP PROCEDURE IF EXISTS 存贮过程名称$$

CREATE DEFINER=root@localhost PROCEDURE 存贮过程名称()
BEGIN DECLARE user_course_id VARCHAR(20);
DECLARE year_a INT;

      DECLARE cur1 CURSOR FOR SELECT 字段_20,id  b_id FROM tb_user_course uc ;
      OPEN cur1;
      FETCH cur1 INTO 字段_20;
      WHILE (字段_20 IS NOT NULL ) DO

         UPDATE 表A SET 字段20=字段_20 WHERE id=b_id;
         FETCH cur1 INTO 字段_20,b_id;
      END WHILE;            
      CLOSE cur1;

END$$

DELIMITER ;

update TBa set column20=b.column20 from TBb as b where ....

做个视图,不一定要合在一起呀!