關於mysql裡面explain的字段學習

2021-10-01 13:47:32 字數 2191 閱讀 8127

create

table test_index_efficient (

id int

primary

keynot

null

auto_increment

,`name`

varchar(20

),`***`

varchar(10

),country varchar(20

),age int(20

))engine

=innodb

charset

=utf8;

1.在解釋之前先說明一下explain裡面的字段

欄位名稱

解釋id

idselect的序列編號

select_type

select_type

表示是簡單還是複雜的查詢

table

table

表示explain行正在訪問的哪個表

partitions

partitions

表示的是當前查詢訪問的是哪個分割槽,一般是基於分割槽表

type

type

表示當前表內的訪問方式

possible_keys

possible_keys

當前查詢可能使用到的索引

keykey

經過優化器評估最後使用的索引

key_len

key_len

使用到的索引的長度

refref

表示引用到的列

rows

rows

得到最終結果查詢在表裡面掃瞄的記錄數

filtered

filtered

表示儲存引擎返回的資料在server層過濾後,剩下多少滿足查詢的記錄數量的比例,注意是百分比,不是具體記錄數

extra

extra

額外的資訊

type:

這一列表示關聯型別或訪問型別,即mysql決定如何查詢表中的行

效能優先順序依次從最優到最差分別為:system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all

1.null:mysql能夠在優化階段分解查詢語句,在執行階段用不著再訪問表或索引。

2.const、system:mysql能對查詢的某部分進行優化並將其轉化成乙個常量(可以看show warnings的結果)。

3.eq_ref:primary key 或unique key索引的所有部分被連線使用,最多隻會返回一條符合條件的記錄。

4.ref:相比eq_ref,不實用唯一索引,而是使用普通索引或者唯一性索引的部分字首,索引要喝某個值相比較,可能會找到符合條件的行。

5.ref_or_null:類似ref,但是可以搜尋值為null的行。

6.index_merge:表示使用了索引合併的優化方法。

7.range:範圍掃瞄通常出現在in(),between,>,=等操作中。

8.index:和all一樣,不同就是mysql只需掃瞄索引樹,這通常比all快一些。

9.all:全表掃瞄,意味著mysql需要從頭到尾去查詢所需要的行,通常情況下這需要增加索引來進行優化了。

key_len:

用於處理查詢的索引長度;越短速度越快;

extra:

1.distinct:一但mysql找到了與行相聯合和匹配的行,就不再搜尋了。

2.using index:這發生在對錶的請求列都是同一索引的部分的時候,返回的列資料只使用了索引中的資訊,而沒有再去訪問表中的行記錄。(是效能高的表現)

3.using where:mysql伺服器將在儲存引擎檢索行後再進行過濾。就是先讀取整行資料,再按where條件進行檢查,符合就留下,不符合就丟棄。

4.using temporary:mysql需要建立一張臨時表來處理查詢。出現這種情況一般是要進行優化的,首先是想到用索引來優化。

5.using filesort:mysql會對結果使用乙個外部索引排序,而不是按索引次序從表裡讀取行。此時mysql會根據聯接型別瀏覽所有符合條件的記錄,並儲存排序關鍵字和行指標,然後排序關鍵字並按順序檢索行資訊。這種情況下一般也是要考慮使用索引來優化的。

rows:

越少越好,掃瞄的記錄越少、越接近結果條數越好。

關於mysql裡面的事物 mysql 事物

mysql之事物詳解 一 事務定義 事務 乙個最小的不可再分的工作單元 通常乙個事務對應乙個完整的業務 例如銀行賬戶轉賬業務,該業務就是乙個最小的工作單元 乙個完整的業務需要批量的dml insert update delete 語句共同聯合完成 事務只和dml語句有關,或者說dml語句才有事務。這...

MySQL學習14 查詢分析器explain

分析出表的讀取順序 資料讀取操作的操作型別 哪些索引可以使用 哪些索引被實際使用 表之間的引用 每張表有多少行被優化器查詢。引數描述 id執行select子句或操作表的順序 select type 查詢的型別,如 primary subquery derived union等 table 當前行使用...

關於channel裡面的策略

關於channel裡面的策略 channel裡面的配置主要在data.data 0 pyload.data.config裡面。config是由groups遞迴形成的。groups的結構如下 groups 下一層 mod policy 當前層發生改變時,需要執行的策略名稱 policies 當前層策略...