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

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!

主站蜘蛛池模板: 瑞昌市| 即墨市| 岗巴县| 北安市| 蒙山县| 福海县| 黄冈市| 瑞丽市| 海安县| 霍林郭勒市| 四川省| 永济市| 古浪县| 红安县| 巫溪县| 镇巴县| 江达县| 陆川县| 莎车县| 松江区| 华池县| 庄浪县| 新和县| 沙田区| 商河县| 宝坻区| 汝州市| 中方县| 永登县| 阆中市| 家居| 武邑县| 威信县| 潞城市| 岢岚县| 德钦县| 潮安县| 咸丰县| 肥乡县| 海宁市| 凌海市|