13.8.2 EXPLAIN 구문
{EXPLAIN | DESCRIBE | DESC}tbl_name[col_name|wild] {EXPLAIN | DESCRIBE | DESC} [explain_type]explainable_stmtexplain_type: { EXTENDED | PARTITIONS | FORMAT =format_name}format_name: { TRADITIONAL | JSON }explainable_stmt: { SELECT statement | DELETE statement | INSERT statement | REPLACE statement | UPDATE statement }
DESCRIBE 문과 EXPLAIN 문은 동의어입니다. 사실, DESCRIBE 키워드가 테이블 구조에 대한 정보를 얻기 위해 더 자주 사용되는 반면, EXPLAIN 는 쿼리 실행 계획 (즉, MySQL이 쿼리를 어떻게 실행하는지 설명)을 취득 하는 데 사용됩니다. 다음의 설명에서는 DESCRIBE 및 EXPLAIN 키워드를 그런 용도에 따라 사용하지만, MySQL 파서는 이들을 완전히 동의어로 처리합니다.
테이블 구조에 대한 정보 검색
DESCRIBE 는 테이블의 컬럼에 대한 정보를 제공합니다.
mysql> DESCRIBE City;
+------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| Name | char(35) | NO | | | |
| Country | char(3) | NO | UNI | | |
| District | char(20) | YES | MUL | | |
| Population | int(11) | NO | | 0 | |
+------------+----------+------+-----+---------+----------------+
DESCRIBE 는 SHOW COLUMNS 의 바로 가기입니다. 이 문은 또한 뷰에 대한 정보도 표시합니다. SHOW COLUMNS 의 설명에서는 출력 컬럼에 대해 더 많은 정보가 제공됩니다. 섹션 13.7.5.6 "SHOW COLUMNS 구문" 을 참조하십시오.
기본적으로 DESCRIBE 는 그 테이블의 모든 컬럼에 대한 정보를 표시합니다. col_name (지정된 경우) 해당 테이블의 컬럼의 이름입니다. 이 경우 문은 지정된 컬럼의 정보 만 표시합니다. wild (지정된 경우)는 패턴 문자열입니다. 여기에는 SQL의 ' % '와' _ '와일드 카드 문자를 포함 할 수 있습니다. 이 경우 문은 문자열과 일치하는 이름을 가지는 컬럼의 출력 만 표시합니다. 공백이나 다른 특수 문자가 포함되어 있지 않은 한,이 문자열을 따옴표로 묶을 필요가 없습니다.
DESCRIBE 문은 Oracle과의 호환성을 위해 제공되고 있습니다.
또한 SHOW CREATE TABLE , SHOW TABLE STATUS 및 SHOW INDEX 문은 테이블에 대한 정보도 제공됩니다. 섹션 13.7.5 "SHOW 구문" 을 참조하십시오.
실행 계획에 대한 정보 검색
EXPLAIN 문은 MySQL이 문을 어떻게 실행하는지에 대한 정보를 제공합니다.
MySQL 5.6.3 현재
EXPLAIN사용할 수있는 설명 가능한 문은SELECT,DELETE,INSERT,REPLACE및UPDATE입니다. MySQL 5.6.3 이전에서는SELECT가 유일한 설명 가능한 문입니다.설명 가능한 문에서
EXPLAIN을 사용하면 MySQL은 최적화에서 문 실행 계획에 대한 정보를 표시합니다. 즉, MySQL은 테이블이 어떻게 어떤 순서로 결합되어 있는지에 대한 정보를 포함하여 문을 처리하는 방법을 설명합니다.EXPLAIN을 사용하여 실행 계획 정보를 얻을 내용은 섹션 8.8.2 "EXPLAIN 출력 형식" 을 참조하십시오.EXPLAIN EXTENDED를 사용하여 추가의 실행 계획 정보를 얻을 수 있습니다. 섹션 8.8.3 "EXPLAIN EXTENDED 출력 형식" 을 참조하십시오.EXPLAIN PARTITIONS는 분할 된 테이블을 포함하는 쿼리의 조사에 도움이됩니다. 섹션 19.3.5 "파티션에 대한 정보를 얻기" 를 참조하십시오.MySQL 5.6.5의 시점에서는
FORMAT옵션을 사용하여 출력 형식을 선택할 수 있습니다.TRADITIONAL는 표 형식으로 출력을 표시합니다.FORMAT옵션이 존재하지 않는 경우 이것이 기본값입니다.JSON형식은 JSON 형식으로 정보를 표시합니다.FORMAT = JSON을 사용하면 출력에는 확장 된 파티션 정보가 포함되어 있습니다.
EXPLAIN 에 의해 인덱스를 사용하여 행을 찾을 수 문이 빠르게 실행되도록 테이블에 인덱스를 추가할지 알 수 있습니다. 또한 EXPLAIN 을 사용하여 최적화가 테이블을 최적의 순서로 결합하고 있는지 여부를 확인 할 수 있습니다. SELECT 문에 테이블이 지정되는 순서에 대응하는 결합 순서를 사용하도록 최적화 팁을 제공하려면 문을 SELECT 뿐만 아니라 SELECT STRAIGHT_JOIN 로 시작합니다. ( 섹션 13.2.9 "SELECT 구문" 을 참조하십시오.)
인덱스가 사용되는 것이다 생각 타이밍에서 그들이 사용되지 않은 문제가있는 경우, ANALYZE TABLE 을 실행하여 Optimizer는 사용자 선택에 영향을 미칠 수있는 키의 중요도 등의 테이블 통계를 업데이트 합니다. 섹션 13.7.2.1 "ANALYZE TABLE 구문" 을 참조하십시오.