gpt4 book ai didi

sql - mysql 列太多?

转载 作者:可可西里 更新时间:2023-11-01 06:35:18 28 4
gpt4 key购买 nike

我正在创建一个包含 30-50 列的表格。这些行大约有 200K。是否建议将此数据存储在单独的表中?当您有这么多列时是否存在性能问题。

我会稍微解释一下表格。我必须存储过去 10 年的所有体育比赛(篮球、棒球、足球、曲棍球)。对于其中的每一个,我都需要保留额外的数据。其中一些数据允许我在运动中重复使用字段。例如,每支球队都有主客场球队和赛事日期。

但是,对于这些比赛中的每场比赛,我还存储了一些信息,例如达到了多少次先失利、多少次三振出局和三分球。显然,此数据仅与表中的某些行有关。结果,我最终在每一行中都有很多 NULL 字段。

如有必要,我可以提供更多细节。提前感谢您提供任何一般性建议。

最佳答案

详细说明 RichardOD 的回答,在处理子类型化时通常有三个选项,您选择哪个取决于您需要对相关数据执行的操作。

第一个选项是您当前正在使用的选项:将与不同类型相关的所有列保留在一个表中,并使用标志和空值来指示给定记录的类型。这是管理子类型化的最简单方法,当您只有几种类型或不同类型差异不大时,它通常很有效。在您的情况下,类型似乎有很大差异。

第二个选项是保留一个中央表,其中包含子类型之间的所有公共(public)列,并与包含这些类型的特定于类型的详细信息的其他表具有一对一关系。

第三种选择是根本不将不同类型视为子类型,而是将所有类型的记录保存在单独的表中。因此,您在保留公共(public)数据的类型之间没有公共(public)表,并且每个表都会有一些跨表重复的列。

现在,每个选项都有它的位置。当不同类型之间没有太多差异时,您会使用第一个选项。如果您需要独立于特定类型的字段来操作公共(public)字段,则可以使用第二个选项;例如,如果您想在一个包含一般信息的大网格中列出所有体育比赛,然后让用户单击以查看该比赛的特定类型的详细信息。当类型根本不是很相关并且您只是出于方便而将它们存储在一起时,您会使用第三个选项;不同的模式,即使它共享一些字段,也不应该合并。

因此,请考虑您需要如何处理这些数据,以及它如何适合这三个选项,然后自行决定哪个是最好的。如果您不能决定,请使用有关您计划如何使用数据的详细信息更新您的问题,我或其他人应该能够为您提供更多帮助。

关于sql - mysql 列太多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1487310/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com