안녕하세요 Mysql 조인횟수 관련 질문입니다. 0 2 2,675

by 초보 [MySQL] [2024.01.17 22:10:23]


질문.jpg (185,487Bytes)

RealMysql 8.0 1권을 읽던 중 이해되지 않는 부분이 있어 질문을 남깁니다.

책 303p에 아래와 같은 내용이 있습니다.

SELECT *
FROM tb_test1 t1, tb_test2
WHERE t1.col1 = t2.col1
ORDER BY t1.col2
LIMIT 10;

tb_test1의 레코드가 100건이고, tb_test2테이블의 레코드가 1000건(tb_test 레코드 1건당 tb_tesst2의 레코드가 10건씩 존재한다고 가정), 두 테이블의 조인결과는 전체 1000건이라고 가정

정렬방법 일겅야 할 건수 조인횟수 정렬해야할 대상건수
인덱스 사용

tb_test : 1건

tb_test2: 10건

1번  
조인의 드라이빙테이블만 정렬

tb_test : 100건

tb_test2: 10건

1번  
임시 테이블 사용 후 정렬

tb_test : 100건

tb_test2: 1000건

100번
(tb_test1 테이블의 레코드 건수만큼 조인 발생
 

 

이때 "조인의 드라이빙 에티블만 정렬"의 조인횟수가 1번인 게 이해가 되지 않습니다. 조인 횟수는 드라이빙 테이블의 레코드에 영향을 받는 것으로 이해하고 있는데 이 경우 조인횟수가 100건이 되어야 하는 게 아닌지 궁금합니다.

by 마농 [2024.01.18 09:43:04]

정렬된 상태에서 1건만 조인하면 10건이 반환되므로
LIMIT 10 구문에 의해 더이상 조인이 필요하지 않게 됩니다.


by 초보 [2024.01.19 08:53:45]

  조인 완료 후 LIMIT 구문이 적용되는 게 아니었군요! 감사합니다~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입