【问题标题】:MySQL sports databaseMySQL体育数据库
【发布时间】:2021-03-07 02:10:37
【问题描述】:

我正在尝试创建一个体育数据库,但我是 SQL 新手。

我有进球、助攻等表格。每个进球都有一个时间、playerid 和 matchid 来了解谁以及何时进球。助攻和其他方面也是如此。

然后,我有一张包含所有玩家的桌子。有他们的名字、身份证、号码等。

我想问一下,这是否是一个很好的表格之间数据划分的概念,如果我想查询一个球员,他的进球数,助攻数等等,那么可以按赛季过滤, 匹配等。

我完全可以想象如何使用外键来做到这一点。

但是,如果我的目标表中有 100 000 个或更多目标,那么对于助攻和其他目标也一样,甚至可能有数百万条记录,这是否足够快?

另一件事是,例如,如果我要查询所有球员,我是否能够按这个计数的进球数对球员进行排序?

所以我会在网站上生成一个新表格,其中包含所有球员及其历史数据,分别计算每个球员的进球数、助攻数……,然后按进球数和其他因素对它们进行排序?

感谢您的帮助!

【问题讨论】:

  • 我觉得没问题。
  • “会不会够快”其实并不难回答。制作一个测试数据制造者,用 数百万 条记录加载您的数据库,然后查看查询的执行情况。查看每秒可以运行多少个查询,使用 X 百万条记录,并寻找性能下降的地方。使用现代 CPU 和 NVMe 驱动器,答案可能有点荒谬,但希望远远超出您的预期用例。
  • 不要忘记应用所有常用的数据库优化技巧,尤其是正确调整服务器并在相关的地方索引所有关系数据。像这样的小修复可以显着提高性能,或者如果没有观察到它会阻碍它。
  • 我有进球、助攻等表格。每个进球都有时间、playerid 和 matchid 来了解谁以及何时进球。助攻和其他方面也是如此。 看起来像一个实体“动作”。

标签: mysql database foreign-keys relational-database


【解决方案1】:

在我看来,它看起来很适合您想要实现的目标。至于你的第二个问题,我假设你想对数据库中已经存在的玩家进行排序。为了实现这一点,MySQL 有一个名为 ORDER BY 的命令。这是它的样子:

SELECT *
FROM PLAYERS
ORDER BY GOALS 

默认情况下会按升序排序。如果要按降序排序,请在 GOALS 后添加 DESC。 更多详情请查看本教程:https://www.mysqltutorial.org/mysql-order-by/

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2013-01-18
    • 2013-11-30
    相关资源
    最近更新 更多