MYsql源码及其剖析
索引基本介紹
索引類型
存儲結構:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引
應用層次:普通索引、唯一索引、主鍵索引、復合索引
索引鍵值類型:主鍵索引、輔助索引(二級索引)
數據存儲和索引鍵值邏輯關系:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)
普通索引
CREATE INDEX <索引的名字> ON tablename (字段名);ALTER TABLE tablename ADD INDEX [索引的名字] (字段名);CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名) );唯一索引
1.索引字段的值必須唯一,但允許有空值
2.在創建或修改表時追加唯一 約束,就會自動創建對應的唯一索引。
與普通索引相比 增加UNIQUE =》UNIQUE INDEXCREATE UNIQUE INDEX <索引的名字> ON tablename (字段名); ALTER TABLE tablename ADD UNIQUE INDEX [索引的名字] (字段名); CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (字段名) ;主鍵索引
它是一種特殊的唯一索引,不允許有空值。也會自動創建
CREATE TABLE tablename ( [...], PRIMARY KEY (字段名) ); ALTER TABLE tablename ADD PRIMARY KEY (字段名)復合索引
復合索引可以代替多個單一索引,相比多個單一索引復合 索引所需的開銷更小。
重要原則就是能用窄索引不用寬索引。更有效
CREATE INDEX <索引的名字> ON tablename (字段名1,字段名2...); ALTER TABLE tablename ADD INDEX [索引的名字] (字段名1,字段名2...); CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名1,字段名2...) );何時使用復合索引,要根據where條件建索引,注意不要過多使用索引,過多使用會對更新操作效率有很大影響。
如果表已經建立了(col1,col2),就沒有必要再單獨建立(col1);
如果現在有(col1)索引,如果查 詢需要col1和col2條件,可以建立(col1,col2)復合索引,對于查詢有一定提高。
全文索引
? 待補充 2021年11月30日
索引原理
索引是物理數據頁存儲,在數據文件中(InnoDB,ibd文件),利用數據頁(page)存儲。
索引可以加快檢索速度,但是同時也會降低增刪改操作速度,索引維護需要代價。
二分
hash
B tree
b數的階是由我們自己考慮決定的,m=5時
- 每個節點最多只有m個子節點。
- 每個非葉子節點(除了根)具有至少? m/2?子節點。
- 如果根不是葉節點,則根至少有兩個子節點。
- 具有k個子節點的非葉節點包含k -1個鍵。
- 所有葉子都出現在同一水平,沒有任何信息(高度一致)。
B+ tree
非葉子節點不存儲data數據,只存儲索引值。這樣便于存儲更多的索引值
葉子節點包含了所有的索引值和data數據
葉子節點用指針連接,提高區間的訪問性能
總結
以上是生活随笔為你收集整理的MYsql源码及其剖析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Appium iOS 自动化测试总结
- 下一篇: 原画学习步骤,零基础一步步学原画