mysql系列04---索引及性能分析

1、索引的結構

 mysql索引的數據結構,對經典的B+Tree進行了優化,在原B+Tree上增加了一個指向相鄰葉子結點的鏈表指針,就形成了一個帶有順序指針的B+Tree,提高了區間訪問的性能。

 選擇B+Tree的優點:

a、相對於二叉樹,層級更少,搜索效率更高

b、相對於B-Tree,B+Tree只在葉子節點上存儲數據,而B-Tree在非葉子節點上也存了數據,這樣存儲的鍵減少,層級更高。

c、hash索引不支持排序和範圍操作。

2、索引的分類

 聚集索引:又叫主鍵索引,葉子節點保存這一行的數據

非聚集索引:又叫常規索引、二級索引,葉子節點保存這一行的主鍵

 

3、性能分析工具---explain

a、使用方式:在select語句前加上explain

b、執行計劃各字段的含義:

 id: 表的執行順序,值相同執行順序從上到下,值越大越先執行。

select_type:表示select的類型,simple表示單表查詢;primary表示主查詢也就是最外層的查詢;union表示join的表;SUBQUERY子查詢

type: 連接類型,性能由好到差的連接類型:NULL、system、const、eq_ref、ref、range、index、all

         NULL不訪問任何表

         system訪問系統表

        const使用主鍵索引

        eq_ref唯一索引

   ref非唯一索引

   range

        index雖然用了索引,但全遍歷所有的索引

   all全表掃描

possible_keys:可能用到的索引

key:實際用到的索引

key_len:索引字段的長度

rows:掃描的行數,只是一個估值,並不太準確

filtered:返回的行數佔總行數的百分比,值越大越好

extra:額外的信息

4、使用規則

 最左前綴法則:主要是針對聯合索引的順序

索引失效的原因:

a、在索引字段上計算;

b、字符串不加單引號;

c、頭部模糊匹配;

d、or條件前如有索引,後面條件沒有索引,則前面索引失效;

e、mysql評估掃描全表比使用索引快,則不會走索引

5、設計原則

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章