Innodb索引

索引分類

聚集索引

  • 是按照主鍵構建的B+樹,葉子節點存放整張表的行記錄,稱爲數據頁
  • 每張表只能有一個
  • 聚集索引邏輯上連續,物理上不一定連續:
    • 數據頁通過雙向鏈表鏈接,按照主鍵排序。
    • 數據頁中的記錄通過雙向鏈表維護,物理上不一定按照主鍵的順序。

輔助索引

  • 可以有多個。
  • 葉子節點包含索引鍵值和指向行數據的書籤。

適用條件

  • 高選擇性(字段取值範圍很廣,幾乎不重複)字段適合建立B+樹索引。
    • Show Index 結果中的 Cardinality表示表中不重複的列的預估值,和總行數的比值接近於1,即爲高選擇性。

索引特徵

聯合索引

  • 對錶上多個列進行索引,鍵值數量>=2(普通索引爲1),是B+樹。
  • 葉子節點上的鍵值對是邏輯有序的。
  • 對於聯合索引(a,b,c),應按照abc的順序使用,如a,ab,abc。

覆蓋索引

  • 從輔助索引的鍵值中能查到需要的記錄,無需再回表查聚集索引。
  • 參考

不使用索引

  • 需要訪問的數據佔比較大(20%左右),優化器會走聚集索引。如果走輔助索引,回表查詢的時候是隨機讀,遠慢於順序讀

ICP優化

  • Index Condition Pushdown, 取出索引的同時考慮進行where過濾。
  • 過濾放在存儲引擎層,減少sql層拉取的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章