關於mysql索引及優化

MyISAM引擎

索引結構 :B+Tree
索引文件和數據文件是分離的,索引文件僅保存數據記錄的地址
可以沒有主鍵
主索引和輔助索引(Secondary key)在結構上沒有任何區別,只是主索引要求key是唯一的,而輔助索引的key可以重複
索引方式:非聚集
索引檢索的算法爲首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然後以data域的值爲地址,讀取相應數據記錄。
在這裏插入圖片描述
在這裏插入圖片描述
InnoDB 引擎

索引結構 :B+Tree
InnoDB 的數據文件本身就是索引文件 按B+Tree組織的一個索引結構,這棵樹的葉子節點保存了完整的數據記錄 這個索引的key 就是表的主鍵
必須有主鍵
輔助索引存儲的![是相應記錄主鍵的值 換句話說InnoDB的所有輔都引用主鍵作爲data域
索引方式: 聚集
聚集索引這種實現方式使得按主鍵的搜索十分高效,但是輔助索引搜索需要檢索兩遍索引:首先檢索輔助索引獲得主鍵,然後用主鍵到主索引中檢索獲得記錄。

在這裏插入圖片描述

在這裏插入圖片描述

優化
1 遵循最左前綴原則
2 爲字段適當建立索引(1.這裏有個索引選擇性 指不重複索引字段的值與表記錄總數的比值 範圍爲(0, 1], 2.表記錄比較少(個人經驗2000以內)的就沒有必要建索引 全盤掃描好了)
3 where 字句中 儘量不使用函數和表達式
4 聯合索引的使用

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