我下面有SQL更新查询。我正在使用MySQL
UPDATE stg_table AS stg
INNER JOIN s_table AS s
ON stg.s_name = s.s_name
AND stg.s_key = s.s_key
SET update_ind = 1,
stg.s_id = s.s_id,
stg.m_id = s.m_id
WHERE stg.processed_ind = 0
这需要花费很长时间来处理,因此,Java中出现了锁等待超时异常。
是否有可能优化此查询,否则我将不得不增加MySQL方面的锁定等待时间?
注意:目前,我在stg_table表中有30k条记录,在s_table表中有3k条记录。
现在,我将
innodb_lock_wait_timeout = 50
作为默认值。如果我将innodb_lock_wait_timeout增加到一个较大的值,例如200,那么我的问题可能会得到解决。但是我不确定表中的数据是否增加,然后此查询可能导致相同的情况。这是我的观点,如果我的理解有误,请纠正我 最佳答案
我在stg.s_name
和stg.s_key
上添加了索引,问题得以解决。现在我的查询需要0.05秒。