MySQL Explain 사용 설명
-- SQL, Jefabc
select * from emp where name = 'Jefabc';
-- SQL , explain
explain select * from emp where name = 'Jefabc';
expain 에서 나 온 정 보 는 10 열 로 id,select 입 니 다.type、table、type、possible_keys、key、key_len、ref、rows、Extra
개요 설명:
id:식별 자 선택
select_type:검색 의 유형 을 표시 합 니 다.
table:출력 결과 집합 표
partitions:일치 하 는 파 티 션
type:표 의 연결 형식 을 표시 합 니 다.
possible_keys:검색 을 표시 할 때 사용 할 수 있 는 색인
key:실제 사용 을 나타 내 는 색인
key_len:색인 필드 길이
ref:열 과 색인 비교
rows:스 캔 한 줄 수(계 산 된 줄 수)
filter:표 조건 에 따라 걸 러 낸 줄 백분율
Extra:실행 상황 에 대한 설명 과 설명
다음 필드 에 나타 날 수 있 는 설명:
id
SELECT 식별 자.SELECT 조회 번호 입 니 다.
제 이 해 는 SQL 이 실행 하 는 순서 에 대한 표지 입 니 다.SQL 은 크 고 작은 것 에서 실 행 됩 니 다.
1.id 와 동시에 실행 순 서 는 위 에서 아래로
2.하위 조회 라면 id 의 번호 가 점점 증가 하고 id 값 이 클 수록 우선 순위 가 높 을 수록 먼저 실 행 됩 니 다.
3.id 가 같 으 면 한 그룹 이 라 고 생각 하고 위 에서 아래로 순서대로 실행 할 수 있 습 니 다.모든 그룹 에서 id 값 이 클 수록 우선 순위 가 높 을 수록 먼저 실행 합 니 다.
-- Jef ,
explain select e.no, e.name from emp e left join dept d on e.dept_no = d.no where e.name like 'Jef%' and d.name = ' ';
2.selecttype
검색 에 있 는 모든 selection 자구 의 유형 을 보 여 줍 니 다.
(1)SIMPLE(단순 SELECT,UNION 또는 하위 조회 등 사용 하지 않 음)
(2)PRIMARY(하위 검색 에서 가장 바깥쪽 검색,검색 에 복잡 한 하위 부분 이 포함 되 어 있 으 면 가장 바깥쪽 selection 은 PRIMARY 로 표 시 됩 니 다)
(3)UNION(UNION 의 두 번 째 또는 뒤의 SELECT 문구)
(4)DEPENDENT UNION(UNION 의 두 번 째 또는 뒤의 SELECT 문 구 는 외부 조회 에 달 려 있다)
(5)UNION RESULT(UNION 결과,union 구문 중 두 번 째 select 시작 후 모든 select)
(6)SUBQUERY(하위 조회 의 첫 번 째 SELECT,결 과 는 외부 조회 에 의존 하지 않 음)
(7)DEPENDENT SUBQUERY(하위 검색 의 첫 번 째 SELECT,외부 검색 에 의존)
(8)DERIVED(파생 표 의 SELECT,FROM 자구 의 하위 조회)
(9)UNCACHEABLE SUBQUERY(하위 조회 결 과 는 캐 시 되 지 않 습 니 다.외부 링크 의 첫 줄 을 재평가 해 야 합 니 다)
테이블
이 단계 에 방문 한 데이터베이스 의 표 이름 을 표시 합 니 다.
유형
표 접근 방식 은 MySQL 이 표 에서 필요 한 줄 을 찾 는 방식 을 나타 내 며'접근 형식'이 라 고도 부른다.
상용 유형:ALL,index,range,ref,eqref,const,system,NULL(왼쪽 에서 오른쪽으로 성능 이 떨 어 지 는 것 부터 좋 은 것 까지)
ALL:Full Table Scan,MySQL 은 표 전 체 를 옮 겨 다 니 며 일치 하 는 줄 을 찾 습 니 다.
index:Full Index Scan,index 와 ALL 은 index 형식 으로 구별 되 며 색인 트 리 만 옮 겨 다 닙 니 다.
range:주어진 범위 의 줄 만 검색 하고 하나의 색인 으로 줄 을 선택 합 니 다.
ref:상기 표 의 연결 일치 조건,즉 어떤 열 이나 상수 가 색인 열 에 있 는 값 을 찾 는 데 사용 되 는 지 표시 합 니 다.
eq_ref:ref 와 유사 합 니 다.차이 점 은 사용 하 는 색인 이 유일한 색인 입 니 다.모든 색인 키 값 은 표 에 하나의 기록 만 일치 합 니 다.쉽게 말 하면 다 중 표 연결 에서 primary key 나 unique key 를 관련 조건 으로 사용 하 는 것 입 니 다.
const,시스템:MySQL 이 특정한 부분 을 조회 하 는 것 을 최적화 시 키 고 상수 로 전환 할 때 이런 유형 으로 접근 합 니 다.홈 키 를 where 목록 에 두 면 MySQL 은 이 조 회 를 상수 로 변환 할 수 있 습 니 다.system 은 const 형식의 특례 입 니 다.조회 표 가 한 줄 밖 에 없 을 때 system 을 사용 합 니 다.
NULL:MySQL 은 최적화 과정 에서 문 구 를 분해 하고 실행 할 때 표 나 색인 에 접근 하지 않 아 도 됩 니 다.예 를 들 어 하나의 색인 열 에서 최소 값 을 선택 하면 단독 색인 을 통 해 찾 을 수 있 습 니 다.
5.possiblekeys
MySQL 에서 어떤 색인 을 사용 하여 표 에서 기록 을 찾 을 수 있 는 지 알려 줍 니 다.관련 필드 에 색인 이 존재 하면 이 색인 은 열거 되 지만 반드시 조회 되 어 사용 되 는 것 은 아 닙 니 다.(이 검색 에서 사용 할 수 있 는 색인 이 없 으 면 null 을 표시 합 니 다)
이 열 은 EXPLAIN 출력 에 표 시 된 순서 와 완전히 독립 되 어 있 습 니 다.이것 은 possiblekeys 의 일부 키 는 실제로 생 성 된 표 순서에 따라 사용 할 수 없습니다.
이 열 이 NULL 이면 관련 색인 이 없습니다.이 경우 WHERE 자 구 를 통 해 특정 열 이나 색인 에 적합 한 열 을 인용 하 는 지 확인 하여 검색 성능 을 향상 시 킬 수 있 습 니 다.그렇다면 적당 한 색인 을 만 들 고 다시 EXPLAIN 으로 검색 합 니 다.
6.열쇠
key 열 은 MySQL 이 실제 사용 하기 로 결정 한 키(색인)를 표시 합 니 다.possible 에 포 함 됩 니 다.keys 중
색인 을 선택 하지 않 으 면 키 는 NULL 입 니 다.MySQL 사용 을 강요 하거나 possible 무시 하려 면keys 열 에 있 는 색인 은 검색 에서 FORCE INDEX,USE INDEX 또는 IGNORE INDEX 를 사용 합 니 다.
7.keylen
색인 에 사용 할 바이트 수 를 표시 합 니 다.이 열 을 통 해 검색 에 사용 할 색인 길이(keylen 에 표 시 된 값 은 색인 필드 의 최대 길이 입 니 다.실제 사용 길이 가 아 닌 key 입 니 다.len 은 표 정의 에 따라 계산 한 것 이지 표 내 에서 검색 한 것 이 아니다)
정확성 을 잃 지 않 는 한 길이 가 짧 을 수록 좋다.
ref
열 과 색인 을 비교 하면 상기 표 의 연결 일치 조건,즉 어떤 열 이나 상수 가 색인 열 에 있 는 값 을 찾 는 데 사용 되 는 지 나타 낸다.
아홉,rows
결과 집합 줄 수 를 추산 하면 MySQL 은 표 통계 정보 와 색인 선택 상황 에 따라 필요 한 기록 을 찾 을 때 읽 어야 할 줄 수 를 추산 합 니 다.
10.엑스트라
이 열 은 MySQL 에서 조 회 를 해결 하 는 상세 한 정 보 를 포함 하고 있 으 며 다음 과 같은 몇 가지 상황 이 있 습 니 다.
Using where:표 의 모든 정 보 를 읽 지 않 고 색인 만으로 필요 한 데 이 터 를 얻 을 수 있 습 니 다.이 는 표 의 모든 요청 열 이 같은 색인 부분 일 때 발생 합 니 다.my sql 서버 는 엔진 검색 줄 을 저장 한 후에 여과 할 것 임 을 표시 합 니 다.
Using temporary:MySQL 은 결과 집합 을 임시 테이블 로 저장 해 야 합 니 다.정렬 과 그룹 조회 에서 흔히 볼 수 있 고 group by 에서 흔히 볼 수 있 습 니 다.order by
Using filesort:Query 에 orderby 작업 이 포함 되 어 있 고 색인 으로 완 성 된 정렬 작업 을'파일 정렬'이 라 고 할 수 없습니다.
-- Extra filesort
explain select * from emp order by name;
Using join buffer:연결 조건 을 가 져 올 때 색인 을 사용 하지 않 고 버퍼 에 연결 하여 중간 결 과 를 저장 해 야 한 다 는 것 을 강조 합 니 다.이 값 이 나 오 면 검색 의 구체 적 인 상황 에 따라 색인 을 추가 하여 개선 할 수 있 음 을 주의해 야 합 니 다.Imposible where:이 값 은 where 문 구 는 조건 에 부합 되 지 않 는 줄 을 가 져 올 수 있 음 을 강조 합 니 다(통계 정 보 를 수집 함으로써 결과 가 존재 할 수 없습니다).
Select tables optimized away:이 값 은 색인 만 사용 하 는 것 을 의미 합 니 다.유 틸 리 티 는 취 합 함수 결과 에서 한 줄 만 되 돌 릴 수 있 습 니 다.
No tables used:Query 구문 에서 from dual 을 사용 하거나 자구 가 포함 되 어 있 지 않 습 니 다.
-- explain select now() from dual;
요약:저자:잭 슬러
출처:http://www.cnblogs.com/tufujie/
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.