可以说我有一个具有以下字段的表用户:
id
username
email
hobbies
我还有另一个名为爱好的表,该表存储有关每个爱好的特定信息:
name | unique
created
type
summary
现在通常有人会通过创建多对多关系和一个联接表来解决这个问题,将其称为user_hobby:
user_id
hobby_name
我正在尝试做不同的事情是使用用户表下的hobby字段,该字段存储一个序列化的业余爱好名称数组。
因此,当我想获取用户的兴趣列表而不是加入联接时,我会这样做。
$array = $user->fetchHobbies()->toArray();
$hobbies = Hobbies::findByNames($array);
性能方面,哪个更好?
最佳答案
在性能方面,最好使用正确的索引将其保留在规范化的数据库结构中。
原因是,如果您要说找到拥有“足球”爱好的所有用户,则要么需要选择每个用户并反序列化他们的爱好数据,要么在该列上运行通配符like
匹配,无论哪种方式大数据速度慢。
关于php - MySQL JOINS用例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11424537/