假设我有一个表用户,其中包含以下字段:
id
username
email
hobbies
我还有一个名为爱好的表,它存储有关每个爱好的具体信息:
name | unique
created
type
summary
现在通常有人会通过创建多对多关系和联接表来解决此问题,将其称为 user_hobby :
user_id
hobby_name
我尝试做的不同的是使用存储序列化爱好名称数组的用户表下的爱好字段。
因此,当我想获取用户的兴趣爱好列表时,我会这样做。而不是进行加入。
$array = $user->fetchHobbies()->toArray();
$hobbies = Hobbies::findByNames($array);
性能方面,哪个更好?
答案 0 :(得分:1)
性能方面,最好将其保留在规范化的数据库结构中,并使用正确的索引。
原因是,如果你想说找到所有拥有'足球'爱好的用户,你需要选择每个用户并反序列化他们的爱好数据,或者在列上运行通配符like
匹配无论哪种方式,大数据都会很慢。