求助,mysql update更新数据太慢了

时间:2022-09-21 17:07:37
一、我有两张表,表1:sealmsgtb,表2:tellermappingtb, 条件是表1中的ownoper的数据等于表2中的OrgOperID,那么就把表2中的
        OperatorID更新到表1的ownoper中去,

二、语句是:update sealmsgtb as seal inner join tellermappingtb as tm on seal.ownoper=tm.orgoperid set seal.ownoper=tm.operatorid where seal.ownoper=tm.orgoperid;

结果是执行的时间需要半个小时,数据量也就不到2万条!有什么好的方法让sql语句执行的快些或者是用别的方法也行。小菜在先谢谢了!

6 个解决方案

#1


引用 楼主 haojian855 的回复:

update sealmsgtb t1 set t1.ownoper=(select  min(OperatorID) from tellermappingtb t2 where t1.ownoper=t2.OrgOperID)

#2


update sealmsgtb as seal,tellermappingtb as tm
 set seal.ownoper=tm.operatorid 
 where seal.ownoper=tm.orgoperid and seal.ownoper=tm.orgoperid 

#3


语法再烂 如果有索引也不会这么慢 
楼主加索引 改改楼上两位的那种语法

#4


楼主,上执行计划啊,explain

#5


创建索引,加快执行速度,记住索引要常用,记得监控索引

#6


2万数据是满足条件的,还是总数据,如果是总数据,那么可能是锁导致的,也就是你更新时有其他人操作数据,导致你的操作等待了
如果满足条件的只有2万,总数据量很大,那么是检索年问题,估计是没有索引导致

#1


引用 楼主 haojian855 的回复:

update sealmsgtb t1 set t1.ownoper=(select  min(OperatorID) from tellermappingtb t2 where t1.ownoper=t2.OrgOperID)

#2


update sealmsgtb as seal,tellermappingtb as tm
 set seal.ownoper=tm.operatorid 
 where seal.ownoper=tm.orgoperid and seal.ownoper=tm.orgoperid 

#3


语法再烂 如果有索引也不会这么慢 
楼主加索引 改改楼上两位的那种语法

#4


楼主,上执行计划啊,explain

#5


创建索引,加快执行速度,记住索引要常用,记得监控索引

#6


2万数据是满足条件的,还是总数据,如果是总数据,那么可能是锁导致的,也就是你更新时有其他人操作数据,导致你的操作等待了
如果满足条件的只有2万,总数据量很大,那么是检索年问题,估计是没有索引导致