高效的mysql查询多个表

高效的mysql查询多个表,mysql,Mysql,我有一个2000个游戏的数据库。每场比赛由15个1-90的数字组成 每次我在数据库中提交一个数字,我都想更新我的结果,所以我总是看到最接近完成的游戏。(一次只能观看50场比赛) 我的数据库结构如下所示: 表:游戏 身份证 名字 表:游戏编号 游戏id 数 表:播放的数字 数 例如: 桌上游戏包含游戏。每个游戏的15个数字(范围1-90)存储在game_Number中,game_id用于标识游戏。播放的表号包含已播放的1-90之间的随机数 我如何在50个游戏中使用最多的数字(意味着游戏

我有一个2000个游戏的数据库。每场比赛由15个1-90的数字组成

每次我在数据库中提交一个数字,我都想更新我的结果,所以我总是看到最接近完成的游戏。(一次只能观看50场比赛)

我的数据库结构如下所示:

表:游戏

  • 身份证
  • 名字
表:游戏编号

  • 游戏id
表:播放的数字

例如: 桌上游戏包含游戏。每个游戏的15个数字(范围1-90)存储在game_Number中,game_id用于标识游戏。播放的表号包含已播放的1-90之间的随机数

我如何在50个游戏中使用最多的数字(意味着游戏数字和数字中都存在的结果),同时牢记效率和简单性?

未经测试

  SELECT game_id, COUNT(*)
    FROM game_numbers
   WHERE number IN (SELECT number FROM numbers_played)
GROUP BY game_id
ORDER BY COUNT(*) DESC
   LIMIT 50;

创建一列“播放的数字”(即非标准化字段,即可从“播放的数字”表中收集的信息的副本)

然后在该列上创建一个索引,如果您是“orderby”,MySQL可以使用该索引来避免排序


但是,请先查看是否存在性能问题。如果没有,则可以省力,如果您保持原样,通过对多个表的查询和“排序方式”,系统将更加规范化聚合。

谢谢你的回复!你能告诉我如何扭转查询吗?比如说我想要桌面游戏中的id、名称,而其他游戏中没有(除了排序)-Regardselect id,name FROM game JOIN game_numbers ON game.id=game_numbers.game_id WHERE game_numbers.number…等等。有趣的是,简单性始终是最不需要考虑的事情。如果我没有整理好我的查询,我可能会这样做!谢谢