SQL 使用内连接优化更新查询
SQL update query with inner join optimisation
我有以下 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_tabletable中有30k条记录,在s_tabletable中有3k条记录。
现在我将 innodb_lock_wait_timeout = 50
作为默认值。如果我将 innodb_lock_wait_timeout 增加到某个更大的值,比如 200,那么我的问题可能会得到解决。但是我不确定如果 table 中的数据增加那么这个查询可能会导致相同的情况。这是我的观点,如果理解有误请指正
我在 stg.s_name
和 stg.s_key
上添加了索引,我的问题得到了解决。现在我的查询需要 0.05 秒。
我有以下 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_tabletable中有30k条记录,在s_tabletable中有3k条记录。
现在我将 innodb_lock_wait_timeout = 50
作为默认值。如果我将 innodb_lock_wait_timeout 增加到某个更大的值,比如 200,那么我的问题可能会得到解决。但是我不确定如果 table 中的数据增加那么这个查询可能会导致相同的情况。这是我的观点,如果理解有误请指正
我在 stg.s_name
和 stg.s_key
上添加了索引,我的问题得到了解决。现在我的查询需要 0.05 秒。