У меня есть следующие SELECT
UPDATE
заявление MySQL
Почему этот запрос так медленно и что я могу поделать
UPDATE table_Learning l
INNER JOIN (select ULN, id from table_users group by ULN having count(ULN) =1) u
ON l.ULN = u.ULN
set l.user_id=u.id
WHERE l.user_id is null
Проблема заключается в том, что это так медленно, что тайм-аута, и в основном не работает ,
Я уверен, что это делать с линией:
INNER JOIN (select ULN, id from table_users group by ULN having count(ULN) =1) u
и именно потому, что существует как GROUP BY
и пункт HAVING
в этот внутренний выбор, и от того, что я прочитал, потому что INNER JOINS
очень медленный с MySQL.
Моя общая цель состоит в том, чтобы:
заселить userID
«S, которые null
в table_learning
Чтобы сделать это, используя userID
» S в table_users
Чтобы присоединиться на поле с именем ULN
в обеих таблицах Чтобы только заполнить поля, где ULN
является уникальным в table_users
, например, если более чем один пользователь имеет эту ULN
, то не заполнять user_id
в table_learning
Это эти презервативы? – EternalHour
@EternalHour да, они – Alex
В этом случае проблема заключается в 'HAVING COUNT'. С innodb данные не индексируются, как с myisam, которые могут вызвать сканирование таблицы. Предоставьте «ОБЪЯСНЕНИЕ» вашего запроса. – EternalHour