客户反馈说有一个功能执行的太慢,数据量5000的情况下就需要5分钟了。我看了一下逻辑,发现里面是这条SQL导致的
UPDATE T0
SET NAME = (SELECT T1.OBJECT_ID
FROM BANK T1
WHERE T1.BAKN_NUM = T0.REC_BAKN_NUM
AND T1.DELETE_FLAG = 0
AND T1.IS_USED = 1)
这个SQL的套了一个子查询,子查询的表有20万左右的数据,然而查询条件的字段却没有加索引,所以每次都走全表查询,导致更新速度巨慢
我直接好家伙,一条SQL跑了足足五分多钟,算上其他的逻辑客户都等睡着了
因此我给表加了索引
ALTER TABLE BANK ADD INDEX idx_baknnum (BAKN_NUM)
速度一下子就快了 ,0.058s跑完