mysql - 具有内连接优化的 SQL 更新查询

标签 mysql sql sql-update inner-join

我有以下 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 秒。

关于mysql - 具有内连接优化的 SQL 更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28336634/

相关文章:

MySQL 查询 - 从其他表中选择行数

sql - 我在delphi中不断收到 "Data type mismatch in criteria expression"错误

MySQL设置where条件

php 和 mysql 使用 bootstrap 3 创建选项卡

php - SQL Codeigniter 事务回滚多路访问回滚

sql - 导入具有外键约束的 SQL 文件

MySQL Workbench 错误 1305 PROCEDURE 不存在

PHP 通过一次提交更新 MySQL 中的多行

php - zend 框架重定向问题 : Invalid controller specified

java - MySQL JDBC java 项目上出现 "AWT-EventQueue-0"java.lang.NullPointerException 错误