更新查询执行超过75分钟

时间:2019-05-21 19:01:19

标签: mysql

我有2个表TABLE_ATABLE_B。如果TABLE_B名称不存在,我想更新TABLE_A状态字段。当我执行下面的查询时,它花费了超过75分钟的时间。我在Table_Bb_idm_id的{​​{1}}列上都有索引。我不确定如何在几秒钟内执行此操作。更新索引列时我做错什么了吗? status统计信息显示在附件图像中。

Table_B

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以尝试使用不匹配的左联接代替NOT IN

但请确保您在

上具有正确的综合索引
  TABLE_A  columns  ( NAME,b_id, m_id)
  TABLE_B columns (NAME, b_id, m_id, status)

UPDATE TABLE_B 
LEFT JOIN TABLE_A ON TABLE_B.NAME = TABLE_A.NAME AND TABLE_A.b_id = 39  and TABLE_A.m_id
SET    status = 3 
WHERE  ( status = 1  OR status IS NULL ) 
AND TABLE_B.b_id = 39 
AND TABLE_B.m_id = 2 
AND TABLE_A.NAME IS NULL