我下面有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_namestg.s_key上添加了索引,问题得以解决。现在我的查询需要0.05秒。

07-26 01:07