#### **explain 語句的基本語法**
*****
```sql
explain select select_options;
```
#### **explain功能中展示各種信息的解釋**
*****
```yml
id:優化器選定的執行計劃中查詢的序列號。
select_type:所用的查詢類型,主要由以下這集中查詢類型。
. DEPENDENT UNION:子查詢中的UNION,且為UNION中從第二個SELECT開始的后面所有SELECT,同樣依賴于外部查詢的結果集。
. SIMPLE:廚子查詢或UNION之外的其他查詢。
》explain select * from admin_user where user_id = 1 \G;
. PRIMARY:子查詢中最外層查詢,注意并不是主鍵查詢。
. SUBQUERY: 子查詢內層查詢的第一個SELECT,結果不依賴與外部查詢結果集。
》explain select * from role where id = (select role_id from admin_user where user_id = 1) \G;
. UNCACHEABLE SUBQUERY:結果集無法緩存的子查詢
. UNION:UNION 語句中第二個SELECT開始后面的所有SELECT,第一個SELECT為PRIMARY。
. UNION RESULT:UNION 中的合并結果。
table:顯示這一步所訪問的數據庫中的表的名稱。
type:告訴我們對標使用的訪問方式,主要包含如下幾種類型。
. all: 全表掃描。
. const: 讀常量,最多只會有一條記錄匹配,由于是常量,實際上只需要讀一次。
. eq_ref:最多只會有一條匹配結果,一般是通過主鍵或唯一鍵索引來訪問
. fulltext:進行全文索引檢索
. index:全索引掃描
. index_merge:查詢中同時使用兩個(或更多)索引,然后對索引結果進行和并,在讀取表數據。
. index_subquery:子查詢中的返回結果字段組合是一個索引(或索引組合),但不是一個主鍵或唯一索引。
. rang:索引范圍掃描。
. ref:join語句中被驅動表索引引用的查詢。
. ref_or_null:與ref的唯一區別就是使用索引引用的查詢之外再增加一個空值的查詢。
. system:系統表,表中只有一行數據:
. unique_subqery:子查詢中的返回結果字段組合式主鍵或唯一約束。
Possible_keys:該查詢可以利用的索引。如果沒有任何索引可以使用,就會顯示程null,這項內容對優化索引時的調整非常重要。
key:優化器從possible_keys中選擇使用的索引。
key_len:被選中使用索引的索引建長度。
ref:列出是通過常量,還是某個字段的某個字段來過濾的
rows:優化其通過系統手機的統計信息估算出來的結果集記錄條數
extra:查詢中每一步實現的額外細節信息。
. using index : 出現這個說明mysql使用了覆蓋索引,避免訪問了表的數據行,效率不錯。
. using where :這說明服務器在存儲引擎收到行后講進行過濾。
. using temporary :這意味著mysql對查詢結果進行排序的時候使用了一張臨時表
. using filesort :這個說明mysql會對數據使用一個外部的索引排序
注意當出現using temporary 和 using filesort時候說明需要優化操作
```
#### **explain 優化指標**
*****
systme>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all
- MySQL
- MySQL 開啟遠程訪問權限
- MySQL 查詢語句
- Explain 分析器
- MySQL 索引
- MySQL 主從復制
- Binlog 日志
- Docker
- Docker 安裝
- Docker 常用命令
- Docker 網絡
- Docker 安裝MySQL
- Redis
- Redis 常用命令
- Redis 配置文件
- Redis 主從復制
- Nginx
- Nginx 常用命令
- Nginx 內置變量
- Nginx 配置文件
- Nginx 負載均衡
- Composer
- Composer 構架組件
- Swoole
- Laravel
- 正則表達式
- Linux
- Linux 常用命令
- Linux 系統相關命令
- Git
- Git 全局配置
- Git 版本控制
- Git 遠程倉庫
- Git 分支管理
- Git 忽略文件
- Supervisor
- Supervisor 安裝
- Supervisor 配置文件
- Supervisor 常用命令