已关闭,此问题为opinion-based。目前不接受答复。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
2天前关闭。
Improve this question
我正在尝试保存字段、文本、数字或列表中的数据类型。如果类型是文本或数字,那就是它,但如果它是一个列表,我需要保存它在字符串上的选项。我在想什么是最有效的方法来保存它,为了存储和性能。
我的想法是在原始表上创建一个列“list”,这个列对于大多数条目来说都是空的,但是如果类型是list,那么它就会有那个字符串。或者我可以创建一个单独的表,只有2个值,一个主键和一个外键来包含原始表中的行的id和一个强制性的字符串字段来保存选项。
2条答案
按热度按时间gwbalxhn1#
对于存储,单独的表可能稍微更有效;对于性能,它可以根据许多因素(包括查询与更新相比的比率)来进行。几乎可以肯定的是,无论哪种方式,都不会产生任何有意义的影响。
相反,我会根据在理解和处理数据方面最有意义的东西来得出一个解决方案。以下是我会考虑的两种解决方案:
1.在索引到主键的所有情况下,请使用单独的表。无论列表中没有数据项、只有一个数据项还是有许多数据项,这种情况都适用。查询列表中的单个项目非常简单。您可以非常高效地添加、删除或更新列表中的单个项目。首先考虑存储灵活性,然后再考虑显示需求。例如,以最有意义的方式存储数据。如果您需要以不同的方式格式化数据,请在检索时格式化数据或使用视图。
1.如果您不太可能独立地更新或查询列表中的项,那么只需使用单个列来表示数据。这通常是非常有效的,尽管它没有提供太多的灵活性。
在任何情况下,都要避免使用不同的数据类型、列或结构来表示同一个数据点。标准化数据类型,以便它可以是您想要表示的任何可能的东西(一个数字,许多数字,一个字符串,许多字符串等)。如果它实际上是单独的数据点,那么使它们不同,不要试图重新利用它们来适应预期之外的东西。
ctrmrzij2#
就存储和性能而言,当您有一个几乎总是空的列时,通常最好有一个带有外键的单独表。原因如下:
1.存储效率:为选项创建单独的表可以保存数据库中的空间,因为您只需存储需要这些选项的特定行的选项。如果在主表中有大量的行,其中“list”列为空,那么在每行中为该列分配空间将是低效的。
1.数据库规范化:通过创建一个带有外键的单独表,可以遵守数据库规范化原则。这使您可以保持数据完整性并避免冗余数据。它还为管理和查询数据提供了更好的灵活性。
1.性能优化:当查询数据时,拥有一个带有外键的单独表可以让您轻松地联接表并检索必要的信息。这种方法比在具有许多行的大型表中搜索空值更有效。
通过使用单独的表,可以优化存储使用率、维护数据完整性并提高查询性能。但是,在做出最终决定之前,考虑应用程序的特定要求和上下文是很重要的。