【发布时间】:2021-03-07 02:10:37
【问题描述】:
我正在尝试创建一个体育数据库,但我是 SQL 新手。
我有进球、助攻等表格。每个进球都有一个时间、playerid 和 matchid 来了解谁以及何时进球。助攻和其他方面也是如此。
然后,我有一张包含所有玩家的桌子。有他们的名字、身份证、号码等。
我想问一下,这是否是一个很好的表格之间数据划分的概念,如果我想查询一个球员,他的进球数,助攻数等等,那么可以按赛季过滤, 匹配等。
我完全可以想象如何使用外键来做到这一点。
但是,如果我的目标表中有 100 000 个或更多目标,那么对于助攻和其他目标也一样,甚至可能有数百万条记录,这是否足够快?
另一件事是,例如,如果我要查询所有球员,我是否能够按这个计数的进球数对球员进行排序?
所以我会在网站上生成一个新表格,其中包含所有球员及其历史数据,分别计算每个球员的进球数、助攻数……,然后按进球数和其他因素对它们进行排序?
感谢您的帮助!
【问题讨论】:
-
我觉得没问题。
-
“会不会够快”其实并不难回答。制作一个测试数据制造者,用 数百万 条记录加载您的数据库,然后查看查询的执行情况。查看每秒可以运行多少个查询,使用 X 百万条记录,并寻找性能下降的地方。使用现代 CPU 和 NVMe 驱动器,答案可能有点荒谬,但希望远远超出您的预期用例。
-
不要忘记应用所有常用的数据库优化技巧,尤其是正确调整服务器并在相关的地方索引所有关系数据。像这样的小修复可以显着提高性能,或者如果没有观察到它会阻碍它。
-
我有进球、助攻等表格。每个进球都有时间、playerid 和 matchid 来了解谁以及何时进球。助攻和其他方面也是如此。 看起来像一个实体“动作”。
标签: mysql database foreign-keys relational-database