首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一列中多次存储多个值?

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

Stack Overflow用户
提问于 2019-01-21 00:28:44
回答 1查看 369关注 0票数 3

有了MySQL,是否有一种方法来存储单个列的键/值数组?例如,我想为一天中的时间存储几个(3-6)不同的值,例如:

代码语言:javascript
复制
12AM: 1.2
1AM: 3.0
6AM: 4.0

我已经看到,执行关系表可能是正确的方法,但我将无法控制列的时间框架或值,它们将是用户输入数据。这里的数据还将链接到单个用户。

我可以有一个由UID链接的单独的表,它有多个带键/值的行,但如果有1,000万行的数据,这不是很慢吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 00:45:51

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

严格地说,您可以在TEXT列中存储任何类型的半结构化数据。但是你会发现搜索它并不容易,也不高效。

您可能会发现自己希望在“数组”中搜索特定的值。在这种情况下,您可能会尝试使用LIKE '%pattern%'正则表达式匹配或类似的东西来找到一天中的某个特定时间。这些表达式很难用索引进行优化,所以搜索通常会变成表扫描。

另一种方法是使用子表,每行有一个日期时间引用您的UID。是的,这可以成为一个包含数百万行的长表,但是使用索引优化搜索要容易得多。对数以百万行的表进行索引搜索,会超过小得多的表上的非索引表扫描搜索。

如果您遵循这样的规则:的每一列都应该是一个标量值,而不是一个“数组”、一个逗号分隔列表、或者一个JSON或XML的“文档”,或者任何类似的半结构化数据,那么您将体验到更少的白发和更愉快的使用SQL的体验。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54282222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档