在mysql中表示数组以便检索的最快方法

时间:2010-02-04 09:08:38

标签: mysql

我有一个php对象数组,我想存储到mysql数据库表中。我能想到的唯一方法就是只有一个表来表示具有唯一id的对象和一个用于存储数组的单独表(可能有一个列array_id和一个object_id)但是检索需要一个我认为可以得到的连接昂贵。有没有更好的办法?我不太关心存储空间或插入时间和检索时间。

我不一定需要这个用于关联数组,但如果解决方案可以,那将是首选。

3 个答案:

答案 0 :(得分:2)

在mysql中构建树结构(读作数组)可能会很棘手,但它始终是完成的。几乎所有具有嵌套线程的论坛都有一些存储树结构的机制。正如另一张海报所说,它们不一定非常昂贵。

真正的问题是你想如何使用这些数据。如果您需要能够在树中的各个节点添加/删除数据字段,那么您可以使用两个模型中的一个

1)邻接列表模型

2)修改的预订树遍历算法

(他们听起来很可怕,但我保证这并不坏。)

列出的第一个可能是您将遇到的更常见的,第二个是我已经开始更频繁使用的那个,并且一旦您绕过它就有一些很好的好处。看看这个页面 - 它有关于两者的优秀文章。 http://articles.sitepoint.com/article/hierarchical-data-database

正如另一张海报所说,如果您不需要通过查询更改数据或在文本中搜索,那么使用PHP函数将其存储在单个字段中。

$array = array('something'=>'fun', 'nothing'=>'to do')

$storage_array = serialize($array);

//INSERT INTO DB

//DRAW OUT OF DB

$array = unserialize($row['stored_array']);

Presto-changeo,那个很容易。

答案 1 :(得分:0)

如果您对无法通过SQL搜索数组中的数据感到满意,则可以向表中添加单个列,并将数组序列化到其中。你必须在retreival上反序列化它。

您可以使用JSON / PHP序列化或任何更适合您正在开发的语言。

答案 2 :(得分:0)

联接不必如此昂贵 - 您可以定义索引。