У меня есть цифровой тестовый сервер Ocean, который имеет Ubuntu 14.04 и MySQL версии 5.5.С другой стороны, мой рабочий сервер - Ubuntu 16.04, а версия mysql - 5.7.У меня есть этот запрос на обновление
UPDATE paid_cricduel.fantasy_teams t
join (select ft.fantasy_team_id,
ft.team_captain_id,
sum((case
when ft.team_captain_id = ccp.cricket_contest_player_id then 2
when ft.team_vc_id = ccp.cricket_contest_player_id then 1.5
else 1
end) * ccp.player_points) as temp_total
from fantasy_teams as ft
join fantasy_team_players ftp on ft.fantasy_team_id=ftp.fantasy_team_id
join cricket_contest_players as ccp on ftp.cricket_contest_player_id = ccp.cricket_contest_player_id
where ft.cricket_contest_id=?
group by ft.fantasy_team_id) temp
set total_points = temp.temp_total
where temp.fantasy_team_id = t.fantasy_team_id
Этот запрос выполняется на моем тестовом сервере за 0,3 секунды, но в моей работе занимает не менее 25 секунд.Иногда даже 50+ секунд.Я пробовал разные решения, упомянутые в отношении переполнения стека, но мне кажется, что ничего не работает.
Вопрос заключается в том, что он берет очки игрока из другого стола и затем выбирает игроков вашей команды из другого стола.Делает суммирование всех очков ваших игроков.Кроме того, если игрок является капитаном вашей команды, он умножает очки этого игрока на 1,5, если он вице-капитан, то на 1,2, в противном случае просто добавляет их как есть.
У меня есть индексы в столбце total_points иfantasy_team_id, но я удалил их, чтобы посмотреть, окажет ли это какое-либо влияние, но это не помогло.
Любая помощь?