2012-07-11 55 views
0

让说我有一个表用户具有以下字段:MySQL的连接使用情况

id 
username 
email 
hobbies 

我有另一个表称为爱好存储有关每个爱好的具体信息:

name | unique 
created 
type 
summary 

现在通常会有人通过创建多对多关系和连接表来解决此问题,请将其称为user_hobby

user_id 
hobby_name 

我尝试做不同的是使用存储爱好名的序列化阵列的用户表下的爱好场。

因此,当我想要获取用户的爱好列表,而不是进行连接时,我会这样做。

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

性能方面,哪个更好?

回答

1

性能明智,它更好地保持它在规范化的数据库结构,并具有正确的索引。

原因是,如果您想要说找到所有具有“足球”爱好的用户,您需要选择每个用户并反序列化他们的兴趣数据,或者在该列上运行匹配的通配符like对大数据来说会很慢。

+0

好吧,这是有道理的。我的教授向我提到,在大规模的应用程序中,关系数据库结构将会崩溃。从那时起,我的团队一直试图设计一个模式,将这些实体放在一张表中。 – shiva8 2012-07-11 02:19:44

+0

当处理大规模应用程序时,有很多选项,将数据序列化到一个字段不是其中的一个。但是,您应该考虑非规范化,集群,高性能硬件和/或面向文档的数据库。 – Petah 2012-07-11 02:25:31

相关问题