2010-12-22 2 views

답변

14

...

eq_ref - 두 개의 테이블이 있다고 상상한다. 표 A (id, text)는 id가 기본 키인 열입니다. 동일한 열 (id, text)을 가진 표 B id는 기본 키입니다. 매우 빠른 때문이다

select A.text, B.text where A.ID = B.ID 

이 조인

1, world! 
2, you? 

는 A와 B 사이에 참여함에 eq_ref 상상해

1, Hello 
2, How are 

표 B 다음 데이터가 표 A는 다음과 같은 데이터를 가지고 표 A에서 스캔 된 각 행에 대해 표 B에있는 ONE 행만이 JOIN 조건을 만족할 수 있습니다. 하나는 하나 이상입니다. 그것은 B.id가 UNIQUE이기 때문입니다. 다음은 서버 측에서 처리를 설명하는 의사 코드입니다 :

foreach (rowA in A) 
{ 
    if (existsInBRowWithID(rowA.id) 
    { 
     addToResult(rowA.text, getRowInBWithID(rowA.id).text); 
     break; 
    } 
} 

심판 - 이제 열이 다른 테이블의 C (ID, 텍스트)을 상상하는 ID를 인덱스하지만 비 UNIQUE 일인치

foreach (rowA in A) 
{ 
    foreach (rowC in C) 
    { 
     if (rowA.id == rowC.id) 
     { 
      addToResult(rowA.text, rowC.text); 
     } 
    } 

} 
: 여기

select A.text, C.text where A.ID = C.ID 

는 서버 측의 처리를 예시하는 의사 코드이다 : A와 C 사이에 참여함에

1, John! 
1, Jack! 

는 REF를 상상해 표 C는 다음과 같은 데이터를 가지고

이 JOIN은 표 A에서 스캔 된 각 행에 대해 표 C에서 가능한 한 행인 SEVERAL 행이 JOIN con dition (위의 루프에서 중단 없음). 그것은 C.ID가 유일하지 않기 때문입니다.

나는 도움이 되었기를 바랍니다 ...

Cheerz!

+0

고마워, 나는 .... 정말 도움이되는 설명 ..... –

+0

완벽한 설명! – julestruong

3

"유형"은 요청한 가입 유형을 나타냅니다.

  • 시스템
  • const를
  • eq_ref
  • 심판
  • 범위
  • 인덱스
  • 모든

당신은 발견 할 것이다 : 최고에서 최악으로, 여기 목록입니다 MySQL d에서보다 자세한 설명 ocumentation : 나는 설명을하려고합니다 http://dev.mysql.com/doc/refman/5.0/en/explain-output.html

+0

그래, 고마워,하지만 그걸 찾고 있지 않다 ... 나는 그 시스템에서 어떤 타입과 const가 무슨 뜻인지 이해했다 ....하지만 eq_ref와 ref는 무엇을 의미 하는가? 나는 MySQL의 설명서에서 설명을 읽었지만 그것을 이해할 수 없었다 .... –