我想将列表值作为数组存储在MYSQL列中。最佳做法是什么?

我想将列表值作为数组存储在MYSQL列中。最佳做法是什么?,mysql,optimization,denormalization,Mysql,Optimization,Denormalization,我有一个带有通用注册字段的注册表格和两个标题为“服务”的多项选择列表。 我想将表单数据存储到数据库的一个表中。 目前我只有一个表“registrations”,我也在考虑是否应该创建另一个名为“registration\u services”的关系表,并存储regid和serviceid 我希望此表中至少有10000条记录 将多个选择列表值存储在同一个表的一列中是否更好 还是创建另一个表并存储为父子关系 最佳做法是什么 请告知 谢谢 SIA不要将值列表存储在单个列中 您所描述的是注册和另一个实体

我有一个带有通用注册字段的注册表格和两个标题为“服务”的多项选择列表。 我想将表单数据存储到数据库的一个表中。 目前我只有一个表“registrations”,我也在考虑是否应该创建另一个名为“registration\u services”的关系表,并存储regid和serviceid

我希望此表中至少有10000条记录 将多个选择列表值存储在同一个表的一列中是否更好

还是创建另一个表并存储为父子关系

最佳做法是什么

请告知 谢谢
SIA

不要将值列表存储在单个列中

您所描述的是注册和另一个实体之间的一对多关系。将关系数据库用作关系数据库


将多个值放在一列中的最大问题是,几乎不可能(当然也不可能)查询具有特定值的记录。

不要将值列表存储在一列中

您所描述的是注册和另一个实体之间的一对多关系。将关系数据库用作关系数据库


将多个值放在一列中的一个大问题是,几乎不可能(当然也不会执行)查询具有特定值的记录。

如果这些服务在其他地方使用,最好创建一个
注册\u服务
表,并使用
连接
获取数据。它应该足够有效。10000根本不是一个大数字


如果它是纯信息性的,并且您没有其他对这些服务的引用,您可以将它们作为CSV存储在一列中,但这是一种罕见的情况,我怀疑您在其他任何地方都不需要它们。

如果这些服务在其他地方使用,最好创建一个
registration\u services
表,并使用
JOIN
s获取数据。它应该足够有效。10000根本不是一个大数字


如果它是纯信息性的,并且您没有其他对这些服务的引用,您可以将它们作为CSV存储在一列中,但这是一种罕见的情况,我怀疑您在其他任何地方都不需要它们。

最好将数据放在单独的表中。除非你的数据集变得非常非常庞大,否则我怀疑它是否会让你的速度变慢,在这一点上你可能会使用某种形式的缓存。从长远来看,这将使维护数据变得更加容易,您将能够受益于索引以及使用FK约束来帮助维护数据的完整性。

最好将数据放在单独的表中。除非你的数据集变得非常非常庞大,否则我怀疑它是否会让你的速度变慢,在这一点上你可能会使用某种形式的缓存。从长远来看,这将使维护数据变得更加容易,您将能够受益于索引以及使用FK约束来帮助维护数据的完整性