我该如何优化这个MySQL查询?

2 php mysql sql optimization

我在包含超过300,000,000(是,三亿)行的数据库的PHP脚本中使用以下MySQL查询.我知道这是非常耗费资源的,运行这一个查询需要很长时间.有谁知道如何优化查询或以更快的方式获取信息?

我需要能够使用1到15之间的任何整数代替MID()中的14.我还需要能够匹配LIKE子句中相同范围内的长度字符串.

表信息:

games | longint, unsigned, Primary Key
win   | bit(1)
loss  | bit(1)
Run Code Online (Sandbox Code Playgroud)

示例查询:

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)
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

Roe*_*ler 5

首先,在游戏领域有一个索引...... :)

查询看起来简单明了,但它隐藏了可能需要更改数据库设计的事实.

在这种情况下,我总是喜欢维护一个包含聚合数据的字段,每天,每个用户或每个任意轴.这样,您可以拥有聚合相关数据并将其保存在数据库中的日常任务.

如果您经常调用此查询,则应使用降低插入效率的原则来提高检索效率.