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