日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

db2 删除索引_MYSQL进阶——索引

發布時間:2025/3/15 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 db2 删除索引_MYSQL进阶——索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

索引模型

hash索引

hash索引主要適用于等值查詢的場景,排序,模糊搜索等場景并不適用

有序數組

有序數組可用于非等值查詢,排序等場景,但是由于寫數據時需要對數組中的元素進行位移,所以一般用于靜態數據的場景

二叉樹

二叉樹模型能夠很好的解決寫操作多時索引的維護,并且支持模糊查詢,排序等操作

常用索引模型

MYSQL中最常用的存儲引擎是InnoDB,InnoDB中常用的索引模型是B+樹(二叉樹的一種,實際上是n叉樹)。

使用n叉樹的好處

樹結構進行搜索的時候,是一層一層進行搜索的,也就是說樹的高度越高,搜索的次數越多,如果數據量比較大,二叉樹的話高度會很高,所以采用n叉樹

B+樹原理

n叉樹

從圖中可以看出,B+樹的分叉上存的是一組范圍的數據,且可以有多個節點,例如現在插入一條數據4,此時4的索引應該是在3和5之間的,這時有兩種情況:

  • 如果子節點允許的最大節點樹超過兩個,則將4放到3和5之間
  • 如果子節點最多只允許放兩個元素,那么此時需要將3和5所在的節點分裂成兩個節點,然后再將數據放上去
  • 對于上面說的第二種情況,就是頁分裂,就是將原本放在一頁的數據分裂成兩頁,此時的空間利用率變低了(因為有一些空位沒有使用)。

    有頁分裂就有頁合并,當我們做刪除操作的時候,如果兩頁的數據都比較少,就可能會發生頁合并。

    索引類型

    聚簇索引和二級索引(InnoDB)

    聚簇索引即主鍵索引,二級索引即非主鍵索引,兩個索引的區別可以用下面這個圖來對比一下:

    主鍵索引和非主鍵索引

    圖中ID是主鍵索引,k為非主鍵索引,從圖中可以看出,它們的區別主要在葉子節點上,主鍵索引的葉子節點存儲的是真正的數據行,但是非主鍵索引的葉子節點存儲的是主鍵,在查詢上它們的一個很大的區別是:

  • 如果使用主鍵索引進行查詢,可以直接獲取到最后的數據
  • 如果使用非主鍵索引進行查詢,只能獲取到id,還需要通過id再獲取到數據行,這個過程稱之為回表
  • 覆蓋索引

    非主鍵索引會多一次回表查詢,但是在一些場景下是可以避免回表的,就比如說查詢的字段和條件字段都在索引上,那么就不需要進行回表,這種場景下對應的索引叫覆蓋索引

    索引原則

    左側原則

    例如我們創建了一個聯合索引(a,b,c),以后我們只使用a條件的時候或者使用a,b條件的時候也是能夠使用該索引的

    索引下推

    索引下推是MYSQL5.6版本后的一個優化,例如現在有聯合索引(a,b),有一個查詢sql:

    select * from T where a like 'pre%' and b = 'field';
  • 無索引下推是先通過聯合索引(a,b)篩選出a like 'pre%' 數據的id,然后回表遍歷符合條件的數據篩選出b='field'的數據后返回
  • 有索引下推是通過聯合索引(a,b)篩選a like 'pre%'順便看看b是否也同時滿足條件,滿足才回表查詢
  • 總結

    以上是生活随笔為你收集整理的db2 删除索引_MYSQL进阶——索引的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。