在MySQL数据库中存储数组的最佳方法?

时间:2012-02-15 19:09:34

标签: mysql arrays

我的部分应用包括歌曲的音量自动化。

卷自动化按以下格式描述:

[[0,50],[20,62],[48,92]] 

我认为这个数组中的每个项目都是一个'数据点',第一个值包含歌曲中的位置,第二个值包含0-100的音量。

然后,我接受这些值并执行客户端功能,使用“虚拟”数据点插入此数据,以创建贝塞尔曲线,从而在播放音频文件时实现平滑的音量转换。

但是,需要允许用户将此自动化保存到数据库中以便以后调用。

数据点可以是无限的(虽然实际上绝不应该超过40-50左右,大多数都不到10)

另外我应该如何处理数据?它应该按原样存储在文本字段中吗?或者我应该事先以某种方式处理它以获得最佳效果?

哪种数据类型最适合在MySQL中用于存储数组?

3 个答案:

答案 0 :(得分:40)

绝对不是text字段,而是varchar - 也许。我不建议解析结果并将它们存储在单独的列中,除非您想利用数据库意义上的数据 - 统计等。

如果你从未看到自己问过“用户使用的平均音量是多少?”然后不要费心解析它。

要弄清楚如何存储这些数据,请问自己“以后如何使用它?”如果您将获得该数组并需要将其与PHP一起使用,则可以使用serialize函数。如果你将使用JavaScript中的值,那么JSON编码可能最适合你(加上许多语言知道如何解码它)

祝你好运!

答案 1 :(得分:3)

如果在检索行时速度是最重要的,那么创建一个新表并使其专用于保存数组的索引。使用整数的数据类型,并使每行代表数组的索引。您必须创建另一个将这些绑定在一起的数字列,以便您可以使用SQL查询重新组装数组。

这样您可以帮助MySQL帮助您加快访问速度。如果您只想要数组的某些部分,只需更改SQL查询中的范围,就可以根据需要重新组合数组。

答案 2 :(得分:3)

我建议你看看JSON数据类型。通过这种方式,您可以以比text或varchar更有效的方式存储数组,并且可以直接从MySQL访问数据,而无需解析整个数据。

请看一下这个链接:https://dev.mysql.com/doc/refman/5.7/en/json.html