2010-11-29 2 views
0

하나 또는 두 개의 테이블을 사용하여 데이터 모델링 문제에 대한 올바른 접근 방식에 대해 물어 보았을 때 일부 사용자는 자체 조인 (self-join)이 성능 책임을 제시한다고 응답했습니다.자체 조인은 다중 테이블 조인보다 높은 성능 저하를 수반합니까?

  1. 모델은 A A Q & 유형 ID 열로 표시 질문과 답변은 같은 테이블에 저장되어있는 웹 사이트를위한이다 :이 사실 주어진 다음 시나리오 (MySQL 데이터베이스)입니다.
  2. 질문에 여러 가지 대답이있을 수 있습니다. 그것은 많은 사람들이 선호하는 투표가 될 수 있습니다.
  3. 품질 평가 점수 등은

대안이 해당 테이블의 각 질문, 답변, 의견을 모델링하고, 따라서 자기 조인을 피하기 위해 자신의 의견을 가지고있다. 나는 아직 어느 접근 방법을 사용할 것인지 결정해야한다. 이 질문은 성능에 참여하는 것과 관련되어 있지만 두 가지 유스 케이스에 대한 추가 조언은 인정 될 것입니다.

감사

답변

3

당신은하지 특히 ​​성능 측면에서 별도의 테이블에서 질문과 답변을 넣어해야하지만, 논리적으로 다른 것 때문에 혼란 그렇지 않으면이다 할 수 있습니다.

성능 관점에서 보면 단일 자체 조인이 느린 특별한 이유는 없습니다. MySQL에서 느린 재귀 적으로 쿼리해야하는 경우 생각한 문제라고 생각됩니다.

또한 성능면에서 디자인은 키가 두 개가 아닌 두 개의 필드로 구성된다는 것을 의미하므로 질문이나 대답을 원하는지 여부를 조건에 지정해야합니다. 넓은 키는 비교하는 데 오래 걸리지 만 심각한 문제는 아니지만 상황에 따라 차이가있을 수 있습니다.