2011-03-05 51 views
0

我有一个多对多的关系,并且需要决定是否为它创建另一个表 - 或者将关系存储在一个带有字符串(CSV)的表中...换句话说:PHP MySQL:JOIN与FIND_IN_SET

例: tbl_Team tbl_Fan

(可选):tbl_fanTeam 我希望能挑到所有的球迷团队,或选择单个风扇,并看到他们的粉丝所有的球队。

在我的SQL调用中,最好的方法是使用JOIN和第三个关系表(tbl_fanteam),还是将所有值放在现有两个表中的一个中?希望这是有道理的...

+0

不需要PHP标签,你可能用PHP编码,但这个问题与它无关。 – 2011-03-05 23:00:57

+0

@Matt - 好点.. – Shackrock 2011-03-05 23:04:54

回答

3

当您使用JOIN ... ON a.x = b.y时,数据库可以利用索引来加快查询。

当您使用FIND_IN_SET时,索引无法使用,因此需要全面扫描。如果你的表有很多行,这将会很慢。

+0

索引如何提供帮助? – Shackrock 2011-03-05 23:05:25

+0

@ Shackrock:索引允许数据库在某些情况下更快地找到一行。具有合适的索引可以提高查询的速度。有关MySQL如何使用索引的更多信息,请参见[手册](http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html)。手册引用:* MySQL使用这些操作的索引:[...]在执行连接时从其他表中检索行。 – 2011-03-05 23:08:41