官术网_书友最值得收藏!

The explain command

The explain SQL command provides information for a specific request. Most of the time, we get a query from the slow query logs to analyze the request. The explain command won't return the classical output of the query but will provide some information concerning the related SQL query.

The explain command can only be applied on a SELECT query. UPDATE and DELETE are supported in Version 10.0.5!

Let's take a query that you can have in your slow query logs. Here is an example with a working version of MediaWiki:

MariaDB [mediawiki]> explain select page_id, page_title, page_namespace, page_is_redirect, old_id, old_text from wiki_page, wiki_revision, wiki_text where rev_id=page_latest and old_id=rev_text_id\g;
*************************** 1. row ***************************
 id: 1
 select_type: SIMPLE
 table: wiki_page
 type: ALL
possible_keys: NULL
 key: NULL
 key_len: NULL
 ref: NULL
 rows: 2005
 Extra:
*************************** 2. row ***************************
 id: 1
 select_type: SIMPLE
 table: wiki_revision
 type: eq_ref
possible_keys: rev_id
 key: rev_id
 key_len: 4
 ref: mediawiki.wiki_page.page_latest
 rows: 1
 Extra:
...
3 rows in set (0.00 sec)

The explain feature lists two rows here. If you examine the first one, ALL means there is a full scan done on the wiki_page table. Then, in the type section, you can see how the table is accessed. Here, there is no index type. That's why 2005 rows were scanned and that's why it's slow.

If you now look at the second row, it's better. There is an index (eq_ref), which means this is the best possible plan to find the row. In addition, the number of scanned rows is 1, so it's perfect!

主站蜘蛛池模板: 泰来县| 独山县| 敦化市| 乌审旗| 枣阳市| 华坪县| 石家庄市| 德阳市| 大新县| 韶关市| 霍邱县| 马山县| 昆明市| 杨浦区| 顺平县| 百色市| 新河县| 霍州市| 南宁市| 屯留县| 铁力市| 浮山县| 长乐市| 广河县| 灵山县| 兰溪市| 哈密市| 什邡市| 张掖市| 桃源县| 长阳| 望谟县| 阳谷县| 格尔木市| 天全县| 怀宁县| 普定县| 布尔津县| 五台县| 双牌县| 营口市|