Spec-Zone .ru
спецификации, руководства, описания, API
|
The EXPLAIN
statement can be used either as a way to obtain information about how
MySQL executes a statement, or as a synonym for DESCRIBE
:
When you precede a statement with the keyword EXPLAIN
, MySQL displays information from the optimizer about the query
execution plan. That is, MySQL explains how it would process the statement, including information about
how tables are joined and in which order. See Section 8.8.2,
"EXPLAIN
Output Format".
EXPLAIN
EXTENDED
can be used to obtain additional information; see Section
8.8.3, "EXPLAIN EXTENDED
Output Format".
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.
The following sections describe how to use EXPLAIN
and EXPLAIN
EXTENDED
to obtain query execution plan information.
EXPLAIN PARTITIONS
is useful only when examining queries involving
partitioned tables. For details, see Section
18.3.5, "Obtaining Information About Partitions".
EXPLAIN
is synonymous
with tbl_name
DESCRIBE
or tbl_name
SHOW COLUMNS FROM
. For
information about tbl_name
DESCRIBE
and SHOW COLUMNS
, see Section 13.8.1,
"DESCRIBE
Syntax", and Section
13.7.5.6, "SHOW COLUMNS
Syntax".
With the help of EXPLAIN
, you can see where you should add indexes to tables so that the statement
executes faster by using indexes to find rows. You can also use EXPLAIN
to check whether the optimizer joins the tables in an optimal order.
To give a hint to the optimizer to use a join order corresponding to the order in which the tables are named in
a SELECT
statement, begin the statement with SELECT
STRAIGHT_JOIN
rather than just SELECT
. (See Section 13.2.9, "SELECT
Syntax".)
The optimizer trace may sometimes provide information complementary to that of EXPLAIN
. However, the optimizer trace format and content are subject to change
between versions". For details, see
If you have a problem with indexes not being used when you believe that they should be, run ANALYZE TABLE
to update table statistics, such as cardinality of keys, that can
affect the choices the optimizer makes. See Section 13.7.2.1, "ANALYZE TABLE
Syntax".