woowacourse-study / 2022-Real-MySQL

⚡️토르⚡️의 짜릿한 Real MySQL 뽀개기 🔨
9 stars 3 forks source link

드라이브 테이블과 드리븐 테이블 #23

Open injoon2019 opened 2 years ago

injoon2019 commented 2 years ago

주제

드라이브 테이브로가 드리븐 테이블

선정 이유

처음 MySQL을 제대로 공부해야겠다고 느끼게 된 계기 중 하나. 드라이빙 테이블과 드리븐 테이블에 대해 몰랐고, 왜 내부적으로 그렇게 최적화를 하는지 궁금했다.

해당 텍스트

image

  1. 조인을 실행할 때 테이블의 순서는 쿼리의 성능에 매우 큰 영향을 미친다. 예를 들어 A 테이블과 B 테이블을 종니할 떄 A 테이블에는 조건이 일치하는 레코드가 1만건이고 B 테이블에는 일치하는 레코드 건수가 10건이라고 가정해보자. 이때 A 테이블을 조인의 드라이빙 테이블로 결정하면 B 테이블을 1만번 읽어야 한다. 이때 B 테이블의 인덱스를 이용해 조인을 실행한다고 하더라도 레코드를 읽을 때마다 B 테이블의 인덱스를 구성하는 B-Tree 루트 노드부터 검색을 실행해야 한다. 그래서 MySQL 옵티마이저는 여러 테이블이 조인되는 경우 가능하다면 일치하는 레코드 건수가 적은 순서대로 조인을 실행한다.

관련 페이지

p.348