일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 운영체제
- 뷰
- 컴퓨터 활용 능력
- INSERT
- 친절한 SQL 튜닝
- gitkraken을 통한 프로젝트 올리기
- github에 새 리포지토리 추가하기
- 첫 프로그래밍
- oracle
- 데이터 모델링
- mysql 설치 방법과 정상 작동 확인하기
- 명령 프롬프트
- 컴퓨터 활용 능력 1급
- 2025-02-13
- 컴퓨터 구조
- 혼자 공부하는 네트워크
- 인덱스의 개념과 장단점
- 혼자 공부하는 컴퓨터 구조 + 운영체제
- 이것이 오라클이다
- 데이터모델링
- 웹 디자인 기능사
- 리눅스 마스터 2급
- 클러스터형 인덱스와 보조 인덱스
- 혼자 공부하는 컴퓨터 구조 및 운영체제
- sqld
- delete
- Update
- youtube review
- 열거형
- 혼자 공부하는 SQL
- Today
- Total
코딩 브이로그
[친절한 SQL 튜닝] 10강) SQL문의 '실행 계획' 사용해보기 (EXPLAIN) 본문
안녕하세요, 유튜브 SQL 튜닝 강의를 보고 학습한 자료를 남깁니다.
감사합니다.
SQL 문의 '실행 계획' 사용해보기
옵티마이저는 SQL 요청이 들어오면
어떤 방식으로 어떻게 처리할지를 계획해요.
실행 계획을 통해서 이를 직접 알아볼 수 있다.
SQL 튜닝은 이 계획을 바꾸어주는 것이다.
옵티마이저 실행 계획 확인 방법
실행계획 타입
테이블은 PK를 기준으로 인덱스가 형성되어 있기 때문에
age 컬럼으로 조건절로 조회를 하면
Full Table Scan을 하게 된다.
다음은 INDEX FULL SCAN을 통해서 데이터를 가져온 것이다.
FULL TABLE SCAN을 한 방법보다
훨씬 더 빠르게 SELECT가 되는 것을 볼 수 있다.
UNIQUE가 아닌 경우라면 해당 컬럼에 데이터가 중복되어서 입력이 된다.
그래서 const가 출력될 수 없다.
중복되지 않은 컬럼에서 데이터 1건을 찾는 순간
나머지 데이터는 볼 필요가 없어진다. 훨씬 빠른 것이다.
성능 개선이 필요 없을 정도로 제일 좋다.
type이 const인 것을 볼 수 있다.
인덱스이기 때문에 한 번에 찾을 수 있는 것이다.
인덱스로 범위 형태의 데이터를 조회하는 것이다.
하지만 찾아야할 범위가 너무 크다면, 인덱스에서 찾아서 다시 실제 테이블에서 찾아야 하기 때문에
성능저하의 요인이 될 수 있다.
다음과 같이 인덱스를 갖은 컬럼을 기준으로 RANGE INDEX SCAN을 하였다.
EXPLAIN 명령어로 조회시 type에 range가 나오는 것을 볼 수 있다.
비고유 인덱스 스캔을 하는 것이다.
인덱스 표에 데이터들이 정렬되어 있기 때문이다.
type에 ref가 나오는 것을 볼 수 있다.
비고유 인덱스로 데이터를 찾았다.
이외에도 type들이 많다.
eq_ref, index_merge, ref_or_nul 등이 있다.
정말 감사합니다.
https://www.youtube.com/watch?v=4a747XKKkkw&list=PLtUgHNmvcs6rJBDOBnkDlmMFkLf-4XVl3&index=11
'친절한 SQL 튜닝' 카테고리의 다른 글
[친절한 SQL 튜닝] 12강) WHERE문이 사용된 SQL문 튜닝하기 - 1 (2) | 2024.10.29 |
---|---|
[친절한 SQL 튜닝] 11강) [실습] 한 번에 너무 많은 데이터를 조회하는 SQL문 튜닝하기 (1) | 2024.10.29 |
[친절한 SQL 튜닝] 8,9강) 자동 생성 인덱스 (4) | 2024.10.29 |
[친절한 SQL 튜닝] 7강) [실습] 인덱스 직접 설정해보기 / 성능 측정해보기 (1) | 2024.10.29 |
[친절한 SQL 튜닝] 6강) 인덱스(Index)란? (0) | 2024.10.28 |