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