처음 MySQL을 제대로 공부해야겠다고 느끼게 된 계기 중 하나. 드라이빙 테이블과 드리븐 테이블에 대해 몰랐고, 왜 내부적으로 그렇게 최적화를 하는지 궁금했다.
해당 텍스트
조인을 실행할 때 테이블의 순서는 쿼리의 성능에 매우 큰 영향을 미친다. 예를 들어 A 테이블과 B 테이블을 종니할 떄 A 테이블에는 조건이 일치하는 레코드가 1만건이고 B 테이블에는 일치하는 레코드 건수가 10건이라고 가정해보자. 이때 A 테이블을 조인의 드라이빙 테이블로 결정하면 B 테이블을 1만번 읽어야 한다. 이때 B 테이블의 인덱스를 이용해 조인을 실행한다고 하더라도 레코드를 읽을 때마다 B 테이블의 인덱스를 구성하는 B-Tree 루트 노드부터 검색을 실행해야 한다. 그래서 MySQL 옵티마이저는 여러 테이블이 조인되는 경우 가능하다면 일치하는 레코드 건수가 적은 순서대로 조인을 실행한다.
주제
드라이브 테이브로가 드리븐 테이블
선정 이유
처음 MySQL을 제대로 공부해야겠다고 느끼게 된 계기 중 하나. 드라이빙 테이블과 드리븐 테이블에 대해 몰랐고, 왜 내부적으로 그렇게 최적화를 하는지 궁금했다.
해당 텍스트
관련 페이지
p.348