Запрос полностью блокирует сервер MySQL - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь выполнить определенный запрос.Однако, когда я его выполняю, сервер 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 голосов
/ 20 ноября 2018

Я не знаю точно, почему ваше обновление не работает, но учитывая количество связанных подзапросов, я не удивлен.Попробуйте переписать его как объединение обновлений:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...