我有以下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,那么我的问题可能会得到解决。但我不确定表中的数据是否增加,那么此查询可能会导致相同的情况。这是我的观点,如果我理解错误,请纠正我
答案 0 :(得分:0)
我在stg.s_name
和stg.s_key
上添加了索引,我的问题得到了解决。现在我的查询花了0.05秒。