在MySQL中将数据存储在多行与序列化数据中

时间:2013-06-14 23:49:02

标签: php mysql database serialization

我有一个问题涉及以序列化形式保存大量数据,而不是表格中的多行。

在我的表格中,我存储了有关我的App用户的Facebook好友的某些个人资料相关信息,即他们的Facebook用户ID,姓名,出生日期。对于每个朋友,我在表中创建多行。因此,例如,如果我的一个App用户有5000个Facebook好友,我会在我的表中插入5000行。相反,将所有朋友的数据以序列化格式保存在一列中会更好吗?我没有单独搜索/排序任何这些字段,也没有在这些列上有多个连接。此外,只有当有人更改其实际的Facebook个人资料信息时,这些列才会很少更新。

我想知道我是否可以在这里使用PHP序列化/反序列化函数来序列化特定用户的整个Friends数组,并将所有数据存储在一个列中。在使用此表时,这有助于优化我的表并给我更好的响应时间吗?

2 个答案:

答案 0 :(得分:1)

在MySQL中,每个值都有一个单独的行,每个值都是绝对的,绝对是可行的方法。这样,您可以在这些列上创建索引,并且即使您没有索引,也可以更轻松地按值查询它们。 (你肯定应该对你打算查询的值有索引。)

但是,在PostgreSQL中,您可以存储序列化为JSON的值(通过json_encode),并在其中索引单独的值。

但是,无论哪种方式,您仍然需要将每个朋友记录存储在表格的单独行中。这不像你可以将5000记录数组的序列化值转储到数据库中并将其称为一天。

答案 1 :(得分:0)

正如你所说,如果你不需要数据搜索,那么可以正确地序列化数据,但是这对你的应用程序来说也可能是一个缓慢的过程,这里不仅仅是一个建议,一个评估,例如,我有一些不同质的数据,即数据不会被分离并将其放在额外的表上,意味着可能失去对数据的控制,然后我更喜欢序列化该数据并使用json进行处理,然后对于用户来说很清楚