MYSQL Выбор текущих последовательных побед - PullRequest
0 голосов
/ 08 декабря 2018

В настоящее время я использую следующий запрос, чтобы выбрать самую последнюю выигрышную серию игроков, и этот запрос отлично работает, за исключением того факта, что загрузка занимает слишком много времени при работе с большим количеством записей.

select sum(id > coalesce((select max(id) from cc6_MensLeague_rounds p2 where p2.player = 1184 and p2.outcome = 1),0)) as current from cc6_MensLeague_rounds p where player = 1184 and outcome = 2;

Мой вопрос ... Есть ли более эффективный способ вернуть те же результаты за меньшее время?

Ожидаемый результат для этого запроса:

Current
6

Я настроил MySqlfiddle at: https://www.db -fiddle.com / f / nMKRZe4EAHwqh1wfmsUbrQ / 0

1 Ответ

0 голосов
/ 08 декабря 2018

Круто, спасибо Strawberry и Vason, за ваше понимание.Я добавил индекс в таблицу и немного изменил запрос select.Результаты потрясающие.

Вот индексный запрос, который я использовал:

ALTER TABLE `cc6_MensLeague_rounds` ADD INDEX `outcome` (`player`,`outcome`)

Вот модифицированный запрос на выборку:

(select sum(id > coalesce((select max(id) from cc6_MensLeague_rounds p2 where (p2.player,p2.outcome) = (cc6_MensLeague_players.id,1)),0)) as current from cc6_MensLeague_rounds p where (player,outcome) = (cc6_MensLeague_players.id,2))

Мое время загрузки увеличилось с 66.21485сек до 0,16173 сек.

Очень ценится: -)

...