2011-03-05 77 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