我使用mysql進行遊戲。我有大約150,000條記錄的分數表。該表看起來像:排行榜排名計數聲明的成本?
fk_user_id | high_score
high_score列是一個int。它有一個索引。我想通過運行以下弄清楚用戶的排名:
SELECT COUNT(*) AS count FROM scores WHERE high_score >= [x]
因此提供用戶的當前high_score上面,我可以讓他們的排名。這個想法是,每當用戶查看個人資料頁面時,我都會運行上述內容以獲得排名。
我想知道這是多麼昂貴,如果我甚至應該走這條路。每次發出查詢時,mysql是否掃描整個表?這是一個瘋狂的想法嗎?
更新:這裏是 '解釋' 說,有關查詢:
ID:1個
SELECT_TYPE:SIMPLE
表:分數
類型:範圍
possible_keys:high_score
鍵:high_score
key_len:5
參照:空
行:1
額外:使用其中;使用索引
感謝
可以運行在MySQL下'解釋SELECT COUNT(*)AS數量FROM成績WHERE high_score> = [X]'和scores'共享的結果除了還'顯示的索引,並添加結果到你的問題。 –
DESC訂單是否爲high_score上的索引?它可能會提高性能。 –
@JosephB沒有索引不是DESC順序,我可以考慮這樣做。 – user3203425