2011-05-09 4 views
1

나는 내 데이터베이스에 카테고리의 트리가 있습니다. 또한 카테고리 ID로 트리와 연관된 항목 테이블이 있습니다.php/mysql 연관 트리 검색 및 항목 쿼리

  • 모두의 ID를 검색 :

    지금, 나는이 모든 특정 범주의 항목과 그 아이들과 그들의 아이들, 등등 ... 지금은

    을 나열 할, 나는 이런 식으로 진행 관련 카테고리.

  • 은 함께 항목 테이블에서 쿼리를 확인 WHERE 같은 절 : WHERE CAT_ID = 2 또는 CAT_ID = 10 OR ...

나는이 방법이 매우 긴 경우 쿼리가 매우 느리고 원인이 될 생각 나는 많은 종류가있다. 때로는 100 가지 범주로 검색 할 수 있습니다.

더 나은 방법이 있습니까? "관계형 데이터베이스에 저장 나무"에 gugl에서

+1

나는 먼저 인덱스를 살펴보고 아마도 쿼리에 대한 설명을 실행한다고 말할 것이다. (그냥 선택하기 전에 설명을하고 결과를 살펴 보라). 테이블의 밝은 버전 (몇 줄)과 현재 사용중인 쿼리를 게시 할 수도 있습니다. – stunti

+0

DB를 어떻게 저장하나요? – piotrm

+0

사람들이 볼 수 있도록 실제 SQL 문을 제공하십시오. 당신이 아직 그것을 끝내지 않았다면, 그것을 시도하십시오. 데이터베이스는 매우 빠릅니다. –

답변

1

: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

  • 인접성 (adjacency) 목록, 가장 복잡한 경우
  • 뿐만 좋지 않다 간단
  • 중첩 세트 1보기에서 (주로 쓰기시) 복잡하다, 하지만 RDBM에서 나무를 저장하고 읽는 데 훨씬 더 표준 적입니다.

+1 당신이 병목 현상을 볼하는 데 도움이 될 것입니다

EXPLAIN select * from table 

에 대해.

대신

column1 = 1 or column1 = 2 

무엇인가 등의 시도 :

column1 in (1, 2) 

어쨌든 그것을 도움이 wouldn`t 인덱스없이.