1

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

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

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

4

2 回答 2

1

在 MySQL 中,一个单独的行和每个值的单独列是绝对的,绝对是要走的路。这样,即使您没有索引,您也可以在这些列上创建索引,并更轻松地按值查询它们。(您绝对应该对要查询的值有索引。)

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

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

于 2013-06-15T00:03:31.963 回答
0

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

于 2013-06-15T00:04:53.313 回答