簡體   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