在一列中多次存储多个值?

Store multiple values for multiple times in one column?

使用 MySQL 有没有办法为单个列存储 key/values 的数组?例如,我想为一天中的时间存储几个(3 - 6)个不同的值,例如:

12AM: 1.2
1AM: 3.0
6AM: 4.0

我已经看到执行关系 table 可能是执行此操作的正确方法,但我无法控制列时间范围或值,它们将是用户输入数据。此处的数据也会 link 给单个用户。

我可以有一个单独的 table link 由 UID 编辑,它会有多行 key/value 但在长 运行 中不会很慢比如说 1000 万多行数据?

MySQL 不支持数组数据类型,尽管它在 MySQL 5.7 及更高版本中支持 JSON data type

严格来说,您可以TEXT列中存储您想要的任何类型的半结构化数据。但是随后您会发现搜索它并不容易或高效。

您可能会发现自己希望在 "array" 中搜索特定值。在这种情况下,您会很想使用 LIKE '%pattern%'regular expression matching 或类似的东西来查找一天中的特定时间。这些表达式很难甚至不可能用索引优化,所以搜索通常变成 table-scans.

另一种方法是使用子 table,每行一个日期时间引用您的 UID。是的,这可以增长到具有数百万行的长 table,但是使用索引优化搜索要容易得多。在具有数百万行的 table 上进行索引搜索将击败在更小的 table.

上进行非索引 table 扫描搜索

如果您遵循 每一列都应该是一个标量值 的规则,您将体验到更少的白发,并且使用 SQL 会更快乐 - 不是"array," 或 comma-separated list,或 JSON 或 XML 的 "document",或类似的任何其他类型的半结构化数据。