【问题标题】:I wanted to store List values as a array in MYSQL column. Whats the best practice?我想将列表值存储为 MYSQL 列中的数组。最佳做法是什么?
【发布时间】:2010-03-03 21:14:56
【问题描述】:

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

我预计此表中至少有 10000 条记录 将多选列表值存储在同一张表的一列中会更好吗?

或者我应该创建另一个表并存储为父子关系吗?

最佳做法是什么?

请指教 谢谢 新航

【问题讨论】:

    标签: mysql optimization denormalization


    【解决方案1】:

    如果这些服务用在别处,最好创建registration_services表,使用JOINs获取数据。它应该足够有效。 10000 根本不是一个大数字。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        最好将数据放在单独的表中。我怀疑除非您的数据集变得真正,真正庞大,否则它会导致您的速度变慢,此时您可能无论如何都可以使用某种形式的缓存。从长远来看,这将使维护数据变得更加容易,您将能够从索引以及使用 FK 约束来帮助维护数据的完整性中受益。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-23
          • 2010-12-16
          相关资源
          最近更新 更多