MYSQL 选择当前连胜

MYSQL Selecting Current Consecutive Wins

我目前正在使用以下查询 select 一名玩家最近的连胜,并且该查询非常有效,但事实上在处理大量记录时加载时间太长。

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;

我的问题是...是否有更有效的方法可以在更短的时间内return获得相同的结果?

此查询的预期输出是

Current
6

我已经在以下位置设置了 MySql fiddle: https://www.db-fiddle.com/f/nMKRZe4EAHwqh1wfmsUbrQ/0

太棒了,感谢 Strawberry 和 Vason 的见解。我在 table 中添加了一个索引,并对 select 查询做了一些调整。结果令人震惊。

这是我使用的索引查询:

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

这是修改后的 select 查询:

(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 秒。

非常感谢:-)