我有一个查询,用于获取每个游戏当前玩家人数的游戏,该游戏按玩家占玩家插槽百分比的度量来排序。
它是这样的:
SELECT
g.* , COUNT( p.ID ) NUM_OF_PLAYERS
FROM
games g,
players p
WHERE
g.ID = p.GAME_ID
GROUP BY
g.ID
ORDER BY
COUNT( p.ID ) / g.MAX_NUM_OF_PLAYERS DESC
大约需要4秒钟。
解释主要是给我的:
如何使其更快?
最佳答案
试试这个查询。它更快吗?
select g.*,p.NUM_OF_PLAYERS NUM_OF_PLAYERS
from games g
left join
(
select GAME_ID, COUNT( ID ) NUM_OF_PLAYERS
from players group by GAME_ID
) p on (g.ID = p.GAME_ID)
ORDER BY
p.NUM_OF_PLAYERS/g.MAX_NUM_OF_PLAYERS DESC