查询完全阻止MySQL服务器

时间:2018-11-20 14:01:17

标签: mysql sql

我尝试运行一个特定的查询。但是,当我执行它时,MySQL服务器不再响应。

base_contrats_actifs中大约有30000行,但我不知道这是否是一个问题。

这是查询:

UPDATE
  base_contrats_actifs a
SET
  a.code_indice = (
    SELECT
      MAX(g.code_indice)
    FROM
      base_gid g
    WHERE
      a.num_version = g.num_version_contrat
  ),
  a.flag_bailleur_locataire = (
    SELECT
      MAX(g.flag_bailleur_locataire)
    FROM
      base_gid g
    WHERE
      a.num_version = g.num_version_contrat
  ),
  a.compte_client = (
    SELECT
      MAX(g.compte_client)
    FROM
      base_gid g
    WHERE
      a.num_version = g.num_version_contrat
  )

可以看到是否有错误吗?如果没有,有什么方法可以调试查询?

1 个答案:

答案 0 :(得分:1)

我不知道您的更新为何无法执行,但是鉴于您拥有相关子查询的数量,我并不感到惊讶。尝试将其重写为更新联接:

UPDATE base_contrats_actifs a
INNER JOIN
(
    SELECT
        num_version_contrat,
        MAX(code_indice)             AS max_code_indice,
        MAX(flag_bailleur_locataire) AS max_flag_bailleur_locataire,
        MAX(compte_client)           AS max_compte_client
    FROM base_gid
    GROUP BY num_version_contrat
) g
    ON a.num_version = g.num_version_contrat
SET
    a.code_indice             = g.max_code_indice,
    a.flag_bailleur_locataire = g.max_flag_bailleur_locataire,
    a.compte_client           = g.max_compte_client;
相关问题