7 mysql sql optimization database-design
我正在创建一个30-50列的表.这些行大约有200K.是否建议将此数据存储在单独的表中?如果有这么多列,是否存在性能问题.
我会解释一下桌子.我必须存储过去10年的所有体育比赛(篮球,棒球,足球,曲棍球).对于其中的每一个,我需要保留其他数据.其中一些数据允许我重复使用各种体育领域.例如,每个团队都有一个主客场球队和一个赛事日期.
然而,对于这些游戏中的每一个,我也存储了诸如实现了多少次初次下降,多少三振出局以及三个指针.显然,此数据仅涉及表中的某些行.因此,我最终在每一行中都有很多NULL字段.
如有必要,我可以提供更多细节.提前感谢任何一般建议.
要详细说明RichardOD的答案,在处理子类型时通常有三个选项,您选择的选项取决于您需要对相关数据执行的操作.
第一个选项是您当前使用的选项:将所有与不同类型相关的列保留在一个表中,使用标志和空值来指示给定记录的类型.这是管理子类型的最简单方法,当您只有几种类型或者不同类型不是很不同时,它通常很有效.在您的情况下,似乎类型可能会有很大差异.
第二个选项是保留一个包含子类型之间所有公共列的中央表,并与包含这些类型的类型特定详细信息的其他表具有一对一的关系.
第三种选择是根本不考虑不同的类型作为子类型,只是将所有类型的记录保存在单独的表中.因此,在保存公共数据的类型之间没有公共表,并且每个表都有一些在表之间重复的列.
现在,每个选项都有它的位置.当不同类型之间没有太多差异时,您可以使用第一个选项.如果您需要独立于特定于类型的字段操作公共字段,则可以使用第二个选项; 例如,如果您想在一个包含一般信息的大网格中列出所有体育比赛,然后让用户点击查看该游戏的特定类型细节.当类型根本不是非常相关时你会使用第三个选项而你只是为了方便而将它们存储在一起; 不同的模式,即使它共享一些字段,也不应该合并.
因此,考虑一下您需要对数据做些什么,以及它如何适应这三个选项,并自己决定哪个是最好的.如果您无法决定,请使用有关您计划如何使用数据的详细信息更新您的问题,我或其他人应该能够为您提供更多帮助.
归档时间: |
|
查看次数: |
3286 次 |
最近记录: |