2011-03-05 6 views
0

나는 다 대다 관계를 가지고있어이를 위해 다른 테이블을 만들지 또는 문자열 (CSV)이있는 테이블에 관계를 저장할지 결정해야합니다. 즉 ... :PHP MySQL : JOIN 대 FIND_IN_SET

예 : tbl_Team tbl_Fan

(선택 사항) : tbl_fanTeam 나는 팀의 모든 팬을 선택, 또는 개별 팬을 선택하고 그들의 팬 모든 팀을 볼 수 있어야합니다 .

SQL 호출에서 가장 좋은 방법은 무엇입니까? 3 번째 관계형 테이블 (tbl_fanteam)과 함께 JOIN을 사용하거나 기존의 두 테이블 중 하나에 모든 값을 넣는 것입니까? 희망이 맞는 말이니 ...

+0

PHP 태그가 필요하지 않을 수도 있습니다. PHP로 코딩 할 수도 있지만이 질문은 아무 관련이 없습니다. –

+0

@Matt - 좋은 지적 .. – Shackrock

답변

3

JOIN ... ON a.x = b.y을 사용하면 데이터베이스가 색인을 활용하여 쿼리 속도를 높일 수 있습니다.

FIND_IN_SET을 사용하면 인덱스를 사용할 수 없으므로 전체 검색이 필요합니다. 테이블에 행이 많은 경우 속도가 느려집니다.

+0

어떻게 인덱스가 도움이됩니까? – Shackrock

+0

@Shackrock : 인덱스를 사용하면 특정 상황에서 데이터베이스가 더 빠르게 행을 찾을 수 있습니다. 적절한 인덱스를 사용하면 쿼리 속도를 향상시킬 수 있습니다. MySQL이 인덱스를 사용하는 방법에 대한 더 자세한 정보는 [매뉴얼] (http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html)을 참조하십시오. 매뉴얼에서 따옴표 : * MySQL은 이러한 연산에 인덱스를 사용합니다 : [...] 조인을 수행 할 때 다른 테이블에서 행을 검색합니다. * –