MySQL EXPLAIN 문장의 사용 예시
사용 방법
EXPLAIN 의 사용법 은 매우 간단 하 다.
mysql> EXPLAIN SELECT * FROM user;
간단하게 말 하면 기 존의 SQL 문장 앞 에 EXPLAIN 키 워드 를 붙 이거 나 EXPLAIN 키 워드 를 붙 인 다음 에 검사 할 SQL 문장 을 붙 이 는 것 이다.출력 결과
EXPLAIN 문장의 출력 결과 야 말로 우리 가 원 하 는 데이터 이자 우리 가 분석 하 는 중점 이다.
우 리 는 먼저 위의 문구 가 준 대응 하 는 결과 의 형식 을 살 펴 보 자.
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| 1 | SIMPLE | user | NULL | ALL | NULL | NULL | NULL | NULL | 3 | 100.00 | NULL |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
EXPLAIN 문 구 는 우리 에 게 준 데 이 터 는 모두 10 열 이 있 습 니 다.다음은 성능 최적화 에 있어 비교적 중요 한 역할 을 하 는 데이터 열 이 대표 하 는 뜻 을 살 펴 보 겠 습 니 다.1.id
이것 은 select 조회 의 시리 얼 번호 입 니 다.
2.select_type
우리 의 SQL 문장 이 selection 문장 이 아 닐 때(즉 delete,update...)이 필드 의 값 은 대응 하 는 조작 형식(delete,update..)입 니 다.
mysql> EXPLAIN INSERT INTO user VAULES(2,'ahong','31');
이때 출력 selecttype 은 우리 가 대응 하 는 INSERT 입 니 다.
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| 1 | INSERT | user | NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
그리고 SQL 문 구 를 사용 할 때 selection 문 구 를 사용 할 때 그 는 해당 하 는 상세 한 select 유형 으로 다음 과 같은 몇 가지 가 있 습 니 다.
SIMPLE: SELECT( UNION )
PRIMARY: SELECT
UNION:UNION SELECT
DEPENDENT UNION:UNION SELECT ,
UNION RESULT:UNION 。
SUBQUERY: SELECT
DEPENDENT SUBQUERY: SELECT,
DERIVED: SELECT(FROM )
다음은 가장 간단 한 SIMPLE 조회 의 예 입 니 다.
mysql> EXPLAIN SELECT * FROM user;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| 1 | SIMPLE | user | NULL | ALL | NULL | NULL | NULL | NULL | 3 | 100.00 | NULL |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
3.table이 작업 에 접근 한 데 이 터 를 표시 합 니 다.
4.partitions
표 에 사 용 된 구역 을 표시 합 니 다.10 년 동안 회사 가 주문 한 금액 을 통계 하려 면 데 이 터 를 10 개 구역 으로 나 누 어 매년 한 구역 을 대표 할 수 있 습 니 다.이렇게 하면 조회 효율 을 크게 높 일 수 있다.
5.type
이것 은 가장 중요 한 열 이다.연결 이 어떤 분 류 를 사 용 했 는 지,색인 을 사 용 했 는 지 보 여 줍 니 다.조회 성능 을 분석 하 는 관건 이다.
그 결과 성능 이 좋 은 것 부터 나 쁜 것 까지 다음 과 같은 상황 이 있다.
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
이 몇 가지 상황 이 대표 하 는 의 미 는 다음 과 같다.6.possible_key
검색 어 에 사용 할 수 있 는 색인 열 을 표시 합 니 다.값 은 하나,여러 개 또는 null 일 수 있 습 니 다.
7.key
key 열 은 이 검색 어 에 실제 사용 되 는 색인 열 을 표시 합 니 다.null 이면 색인 을 사용 하지 않 았 음 을 표시 합 니 다.
possible 보 여 주세요.key 와 key 의 실제 효과:
다음은 age 열 에 색인 을 만 드 는 데이터 시트 입 니 다.아래 의 조 회 를 진행 하 겠 습 니 다.
mysql> explain select * from user where age = 1;
다음 과 같은 결 과 를 얻 을 수 있 습 니 다.
+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+
| 1 | SIMPLE | user | NULL | ref | age | age | 5 | const | 1 | 100.00 | NULL |
+----+-------------+-------+------------+------+---------------+------+---------+-------+------+----------+-------+
8.key_len현재 검색 어 에 사용 되 는 색인 길 이 를 표시 합 니 다.정확성 을 잃 지 않 는 상황 에서 길 이 는 짧 을 수록 좋다.
9.ref
인용 한 이전 표 의 열.
10.rows
표 의 상황 과 조회 문장의 상황 에 따라 MySQL 은 최종 결 과 를 되 돌려 주 는 데 필요 한 줄 의 수 를 추산 합 니 다.이 열의 값 이 클 수록 조회 효율 이 떨어진다.
11.filtered
하나의 백분율 값 을 rows 열 값 과 함께 사용 하면 실행 계획(QEP)의 이전 표 의 결과 집합 을 조회 하여 join 작업 의 순환 횟수 를 확인 할 수 있 습 니 다.작은 시계 가 큰 시 계 를 구동 하여 연결 횟수 를 줄이다.
12.extra
MySQL 이 조회 의 추가 정 보 를 어떻게 해석 하 는 지 에 대해 서 는 다음 과 같은 몇 가지 가 있 습 니 다.
Extra 에 포 함 된 값:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.