MSQL两个独立表怎么相互补全

Navicat 15 两张独立的表用其中一张表补齐另一个表的内容,代码一直在运行就是没有结果也不报错为什么?有解决的方法吗?

表A和表B没有设置外键索引之类的,就是两个独立的表
表A,数据量多(有百万数据)

表B,数据少

根据表B的数据,补全表A的数据

例如表A中有字段身份证,姓名,交易卡号,但都是Null值

表B中有字段,身份证,姓名,交易账号, 其中信息是齐全的

我的代码:(PS:zj_qz这个表数据有三百万,可能后续还会增加,gas_account_info这个表数据少,但后面也会增加,但不多)

UPDATE zj_qz a,gas_account_info b set a.交易卡号=b.交易卡号 where a.交易账号 = b.交易账号 and a.交易卡号 = '' ;
UPDATE zj_qz set 交易卡号 = 交易账号 where 交易卡号 = '' and 交易账号 != '';
UPDATE zj_qz a,gas_account_info b set a.交易账号=b.交易账号 where a.交易卡号 = b.交易卡号 and a.交易账号 = '' ;
UPDATE zj_qz set 交易账号 = 交易卡号 where 交易账号 = '' and 交易卡号 != '';

我补齐交易卡号的时候代码一直运行,就是没有结果也不报错

大能们怎么办啊!救命!

我觉得,可以尝试检查的代码是否存在死锁的情况。死锁可能会导致的代码一直运行而没有结果,也不会报错。可以使用MySQL的SHOW PROCESSLIST命令查看当前正在运行的进程,以及它们的状态和持续时间,以确定是否有死锁情况发生。

另外,你的代码中使用了多个UPDATE语句,这可能会导致性能问题,特别是在大型数据集上。可以尝试将多个UPDATE语句合并为一个语句,以提高性能。以下是一个可能的解决方案:

UPDATE zj_qz a
INNER JOIN gas_account_info b ON a.交易账号 = b.交易账号
SET a.交易卡号 = b.交易卡号,
    a.交易账号 = b.交易账号
WHERE a.交易卡号 = '' AND a.交易账号 = '';

使用了INNER JOIN连接两个表,并使用SET语句一次性更新两个字段。我们还在WHERE子句中添加了条件,以确保只有当两个字段都为空时才进行更新操作。

如果的数据集非常大,可能需要考虑使用更高级的优化策略,例如分区表或索引优化。但是,在尝试这些策略之前,应该先确保的代码没有错误,并且的数据库服务器的硬件和配置足够支持的应用程序的需求。

你是在运行的系统上执行sql吗