我在包含超过300,000,000(是,三亿)行的数据库的PHP脚本中使用以下MySQL查询.我知道这是非常耗费资源的,运行这一个查询需要很长时间.有谁知道如何优化查询或以更快的方式获取信息?
我需要能够使用1到15之间的任何整数代替MID()中的14.我还需要能够匹配LIKE子句中相同范围内的长度字符串.
表信息:
games | longint, unsigned, Primary Key
win   | bit(1)
loss  | bit(1)示例查询:
SELECT MID(`game`,14,1) AS `move`,
       COUNT(*) AS `games`,
       SUM(`win`) AS `wins`,
       SUM(`loss`) AS `losses`
FROM `games`
WHERE `game` LIKE '1112223334%'
GROUP BY MID(`game`,1,14)在此先感谢您的帮助!
首先,在游戏领域有一个索引...... :)
查询看起来简单明了,但它隐藏了可能需要更改数据库设计的事实.
在这种情况下,我总是喜欢维护一个包含聚合数据的字段,每天,每个用户或每个任意轴.这样,您可以拥有聚合相关数据并将其保存在数据库中的日常任务.
如果您经常调用此查询,则应使用降低插入效率的原则来提高检索效率.
| 归档时间: | 
 | 
| 查看次数: | 252 次 | 
| 最近记录: |