繁体   English   中英

MySQL RDS存储过程更新查询缓慢

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM