0

假设我有一个表用户,其中包含以下字段:

id
username
email
hobbies

我有另一个名为hobbies的表,它存储有关每个爱好的特定信息:

name | unique
created
type
summary

现在通常有人会通过创建多对多关系和连接表来解决这个问题,称之为user_hobby

user_id
hobby_name

我想要做的不同是使用存储爱好名称序列化数组的用户表下的爱好字段。

因此,当我想获取用户的爱好列表时,我会这样做,而不是加入。

$array = $user->fetchHobbies()->toArray();
$hobbies = Hobbies::findByNames($array);

性能方面,哪个更好?

4

1 回答 1

1

性能方面,最好将其保存在规范化的数据库结构中,并具有正确的索引。

原因是,如果你想说找到所有有“足球”爱好的用户,你要么需要选择每个用户并反序列化他们的爱好数据,like要么在列上运行通配符匹配,无论哪种方式都会很慢大数据。

于 2012-07-11T02:14:18.093 回答