Jam*_*son 5 mysql sql query-optimization
当数据库很小时,这个查询工作正常,但是现在数据库中有数百万行,我意识到我应该先考虑优化它.它正在查看超过600,000行并且正在使用where; 使用临时; 使用filesort(导致执行时间为5-10秒).它正在使用字段'battle_type'上的索引.
SELECT username, SUM( outcome ) AS wins, COUNT( * ) - SUM( outcome ) AS losses
FROM tblBattleHistory
WHERE battle_type = '0' && outcome < '2'
GROUP BY username
ORDER BY wins DESC , losses ASC , username ASC
LIMIT 0 , 50
Run Code Online (Sandbox Code Playgroud)
首先要确保您有良好的索引(正如其他人提到的)。
但是,您似乎正在为网页创建某种排行榜。我的第一个问题是 - 你真的需要实时执行这个查询吗?您能否在数据库中创建一个包含此查询结果的表(或向用户表添加胜负列),并定期刷新它?
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |