0

プレイヤースロットの何パーセントがプレイヤーによって埋められているかを基準にして並べ替えられた、各ゲームの現在のプレイヤー数を持つゲームを取得するクエリがあります。

こんなふうになります:

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秒ほどかかります。

そして、説明すると主にこれが得られます:

ここに画像の説明を入力

速くする方法は?

4

1 に答える 1

1

このクエリを試してください。速いですか?

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
于 2013-01-10T14:16:23.463 に答える