7-8 질문
53
작성한 질문수 42

현재 실행 계획이
강의랑 반대라서 질문 남겨봅니다
드라이빙 테이블이 de 로 나오는 이유가 뭘까요 ?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
kkkkkk님, 드라이빙 테이블이 de로 나오는 이유에 대해 설명드리겠습니다. SQL 실행 계획에서 드라이빙 테이블이 결정되는 것은 여러 요인에 의해 좌우됩니다. 보통 옵티마이저는 쿼리를 효율적으로 실행하기 위해 가장 적은 비용을 드는 경로를 선택하게 됩니다. 여기서 비용은 단순히 실행 시간이 아닌, 데이터 접근 및 처리에 소모되는 비용을 의미합니다.
드라이빙 테이블은 조인이 수행되는 순서를 결정하는데, 기본적으로 옵티마이저는 다음과 같은 요소들을 고려하여 드라이빙 테이블을 선택합니다:
1. 통계 정보: 테이블의 데이터 수, 인덱스의 유무, 카디널리티 등.
2. 필터 조건: WHERE 조건에 의해 더 많은 데이터를 거를 수 있는 테이블.
3. 인덱스 사용 여부: 보다 효율적으로 데이터를 접근하기 위해 인덱스를 사용하는 테이블.
쿼리에서 드라이빙 테이블인 de가 선택된 이유는, 해당 테이블이 인덱스를 잘 활용하여 적은 수의 데이터를 빠르게 필터링할 수 있기 때문일 수 있습니다. 따라서, 옵티마이저는 dept_emp_mapping 테이블을 먼저 접근하여 조인을 수행할 데이터 범위를 줄이고, 그 다음으로 manager 테이블과의 존재 조건을 확인하는 방식으로 쿼리를 실행할 수도 있습니다.
만약 실행 계획이 강의와 다르게 나온다면, 데이터의 규모나 인덱스의 유무, 혹은 통계 정보의 차이 때문일 가능성이 높습니다. 오히려 실행 계획이 다른 경우는 데이터베이스 내 다른 변수에 의해 발생할 수 있으므로, 인덱스와 통계 정보의 차이를 점검해보시는 것도 추천드립니다.
추가로 실행 계획을 더 이해하기 위해 EXPLAIN 명령어를 활용하여 세부적인 실행 계획을 확인하고 분석하는 것도 좋은 방법입니다.
이미지 원본 URL을 참고하셔서 더욱 깊이 있는 조사에도 도움이 되었으면 합니다: 여기.
더 궁금하신 점이 있으시다면 언제든지 질문해주세요!
Substack 1년 제공
1
14
3
특별 학습 자료 프로모션 1년 멤버십 무료 제공 문의드립니다
0
22
2
스프링부트 서버 에러나요
0
14
1
코드를 첨부해야하는 이유가 있나요?
0
17
2
간단한 오타 제보입니다.
0
17
1
큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.
0
33
2
실제 FK제약조건을 설정하지 않는이유
0
32
2
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
25
2
Sequence 관련 질문
1
28
2
Image Only Query
1
29
2
Free Edition 실습 영상은 아직 업데이트전인가요?
0
22
1
라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항
0
34
2
상품 정보 크롤링
0
29
2
JPA Repository 질문이 있습니다!
1
33
2
페이지네이션 처리를 쿼리에서 하는 방식 질문
1
36
1
강의에 적용한 스크립트를 받아 볼수 있을까요?
0
40
2
실습소실행안되요
0
36
1
수강기간 연장
0
27
1
FTS 방식으로 수행하는 나쁜 SQL 에서 질문이 있습니다.
0
51
0
다음과 같은 쿼리가 더 좋은 결과를 보이는데 이유가 뭔지 궁금합니다.
0
138
1
rollup mariadb 11 ver 기준
0
128
1
use index, force index 힌트 질문
0
232
1
BNL Join 사용
0
129
1
select_type 에서 'simple' 경우 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요?
0
105
0





