Spec-Zone .ru
спецификации, руководства, описания, API
|
{EXPLAIN | DESCRIBE | DESC}tbl_name
[col_name
|wild
]{EXPLAIN | DESCRIBE | DESC} [explain_type
]explainable_stmt
explain_type
: EXTENDED | PARTITIONS | FORMAT =format_name
format_name
: TRADITIONAL | JSONexplainable_stmt
: SELECT statement | DELETE statement | INSERT statement | REPLACE statement | UPDATE statement
The DESCRIBE
and EXPLAIN
statements are synonyms. In practice, the DESCRIBE
keyword is more often used to obtain information about table
structure, whereas EXPLAIN
is used to obtain a query execution plan (that is, an explanation of
how MySQL would execute a query). The following discussion uses the DESCRIBE
and EXPLAIN
keywords in accordance with those uses, but the MySQL parser treats
them as completely synonymous.
DESCRIBE
provides information about the columns in a table. It is a shortcut for
SHOW COLUMNS FROM
. These statements also display information for views. (See Section 13.7.5.6,
"SHOW COLUMNS
Syntax".)
col_name
can be a column name, or a string containing the SQL "%
" and "_
" wildcard characters to
obtain output only for the columns with names matching the string. There is no need to enclose the string within
quotation marks unless it contains spaces or other special characters.
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 | |+------------+----------+------+-----+---------+----------------+5 rows in set (0.00 sec)
The description for SHOW COLUMNS
provides more information about the output columns (see Section
13.7.5.6, "SHOW COLUMNS
Syntax").
If the data types differ from what you expect them to be based on a CREATE TABLE
statement, note that MySQL sometimes changes data types when you
create or alter a table. The conditions under which this occurs are described in Section
13.1.17.3, "Silent Column Specification Changes".
The DESCRIBE
statement is provided for compatibility with Oracle.
The SHOW CREATE TABLE
, SHOW TABLE STATUS
, and SHOW INDEX
statements also provide information about tables. See Section
13.7.5, "SHOW
Syntax".
The EXPLAIN
statement provides a way to obtain information about how MySQL executes a
statement:
When you precede a statement with the keyword EXPLAIN
, MySQL displays information from the optimizer about the
statement execution plan. That is, MySQL explains how it would process the statement, including
information about how tables are joined and in which order. EXPLAIN EXTENDED
can be used to obtain additional information.
As of MySQL 5.6.3, EXPLAIN
provides information about SELECT
,
DELETE
,
INSERT
,
REPLACE
,
and UPDATE
statements. Before MySQL 5.6.3, EXPLAIN
provides information only about SELECT
statements.
For information about using EXPLAIN
and EXPLAIN EXTENDED
to obtain query execution plan information, see Section 8.8.1, "Optimizing Queries with EXPLAIN
".
EXPLAIN PARTITIONS
is useful only when examining queries involving
partitioned tables. For details, see Section
18.3.5, "Obtaining Information About Partitions".
As of MySQL 5.6.5, the FORMAT
option can be used to
select the output format. TRADITIONAL
presents the output in tabular
format. This is the default if no FORMAT
option is present. JSON
format displays the information in JSON format. With FORMAT = JSON
, the output includes extended and partition information.