別件の確認のために MySQL マニュアルを見ていて、とんでもない事に気づいてしまいました。
The DESCRIBE and EXPLAIN statements are synonyms.
MySQL :: MySQL 8.0 Reference Manual :: 13.8.2 EXPLAIN Statement
ご存じの通り、MySQL において、DESC (または DESCRIBE)はテーブル定義を確認するときに使用するもの、EXPLAINは実行計画を確認するものとして知られています。こいつらがシノニムだっただと・・・・・!!|???
.
私の知ってる DESCの使い方:
mysql> DESC sample01; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | code | char(2) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
.
これがなんと、EXPLAINでも同じらしい(シノニム)。
mysql> EXPLAIN sample01; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | code | char(2) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec)
ぉぉ・・・・・
.
私の知っている EXPLAIN の使い方:
mysql> EXPLAIN SELECT COUNT(*) FROM sample01 WHERE id>3; +----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+ | 1 | SIMPLE | sample01 | NULL | range | PRIMARY | PRIMARY | 4 | NULL | 4 | 100.00 | Using where; Using index | +----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+ 1 row in set, 1 warning (0.00 sec)
これがDESCでも同じ(シノニム)だったなんて・・・・:
mysql> DESC SELECT COUNT(*) FROM sample01 WHERE id>3; +----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+ | 1 | SIMPLE | sample01 | NULL | range | PRIMARY | PRIMARY | 4 | NULL | 4 | 100.00 | Using where; Using index | +----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+ 1 row in set, 1 warning (0.00 sec)
.
知っている人は知っている。知らないひとはちょっと驚く、小ネタでした。
.
MySQL :: MySQL 8.0 Reference Manual :: 13.8.2 EXPLAIN Statement より:
{EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild] {EXPLAIN | DESCRIBE | DESC} [explain_type] {explainable_stmt | FOR CONNECTION connection_id} {EXPLAIN | DESCRIBE | DESC} ANALYZE [FORMAT = TREE] select_statement explain_type: { FORMAT = format_name } format_name: { TRADITIONAL | JSON | TREE } explainable_stmt: { SELECT statement | TABLE 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).