[英]MySQL RDS Stored Procedure Update query is slow
我在存储过程中有一个更新查询,该查询根据来自TABLE2的ID更新TABLE1。 这是使用子查询编写的,如下所示。
update TABLE1 A
set status = 'ABC'
where A.ID in (
select ID
from TABLE2 B
where B.SE_ID = V_ID
and B.LOAD_DT = V_DT
);
我已经用
加入
从主查询中屏蔽子查询
使用临时表并加入。
独立更新速度更快。
但是将其放入存储过程非常慢。 需要使用来自TABLE2的2000 ID的2000条记录来更新TABLE1。
有人请帮忙。
避免使用子查询代替联接。 MySQL在优化子查询方面的使用非常差。 也就是说,它最多可以运行2000次子查询。
使用联接:
UPDATE TABLE1 A
INNER JOIN TABLE2 B
ON A.ID = B.ID
SET A.status = 'ABC'
WHERE B.SE_ID = V_ID
AND B.LOAD_DT = V_DT;
您将需要创建一个索引来对此进行优化。
ALTER TABLE TABLE2 ADD INDEX (SE_ID, LOAD_DT, ID);
如果我假设其ID列是其主键,则无需在TABLE1上创建索引。 那本身就是一个索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.