0

我有一款遊戲,每一輪玩家都可以獲得獎勵,並按總獎金進行評分。 我用這樣的模式:需要數據庫/查詢設計方面的幫助以進行遊戲玩家的評分計算

1)表game_result(USER_ID,獎金,GAME_DATE)用於分別存儲遊戲的結果(我需要它爲我的統計)

2)表等級(USER_ID,total_prize ,total_games)用於存儲評分數據和total_prize,total_games值在每場比賽結束時更新。

3)我需要快速查找用戶的總獎金和排名(在遊戲中顯示它)。現在我使用這種查詢

SET @rank=0; 
SELECT @rank:[email protected]+1 AS rank, user_id, total_prize, total_games FROM rating order by total_prize where user_id = ? 

但它爲每個查詢度假評級表,並且速度太慢。問題在於,每場比賽之後,只有一排球員被改變(使用total_prize,total_games),但爲了找到他的新球場,我需要整個表格,而且表現並不可行。

是否可以重新組織表以提高此操作的性能?

謝謝!

回答

1
SELECT COUNT(*) 
FROM rating 
WHERE total_prize <= (SELECT total_prize FROM rating WHERE user_id = ?) 

(或者做一個單獨的查詢,並得到你需要的用戶total_prize,再加上其他列,然後指望它。)

確保對課程的total_prize指數。

(您可能需要> =,具體取決於您的排名。)

+0

有趣的是,Ariel。我會嘗試這個查詢並比較性能。 – dbf