資料庫索引

2021-10-13 23:11:45 字數 1071 閱讀 8470

索引資料結構:b樹索引,b+樹索引,hash索引

索引種類:聚集索引/主鍵索引, 非聚集索引/二級索引

聯合索引-最左匹配原則

選擇資料中的乙個字段 作為索引字段。

建立額外的乙個索引資料結構,包含索引欄位的值 以及 指向相關記錄的指標,

然後對這個索引結構 根據索引欄位的值進行排序

查詢資料時 會把所有記錄讀取出來,然後與查詢條件對比. i/o開銷大時間長

參考:

平衡二叉樹

基於二分法原理, 左小右大

b樹平衡多路查詢樹(查詢路徑/子節點 不只兩個,區分多個段)

b+樹只拿 葉子節點 儲存指標資料,每次查詢的次數都一樣

層級更少, 讓查詢速度更加穩定

hash索引:查詢單條快,範圍查詢慢

非聚集索引的葉子節點儲存的是主鍵+索引列值,最終還是要「回表」,也就是要通過主鍵再查詢一次。這樣就會比較慢

如果要查詢的資料和索引列對應匹配, 就不用再次查詢, 這就是覆蓋索引

多個列建立索引, 涉及到哪個列會走索引,哪個列不走索引的問題

索引只能用於查詢key是否存在(相等)不能是範圍匹配

從左向右匹配,以最左邊的為起點任何連續的索引都能匹配, 遇到範圍查詢(>,<,between,like)就停止匹配

mysql會自動優化這些條件的順序,以匹配盡可能多的索引列。

如多列索引(a, b, c, d)

a =

1and b =

2and c >

3and d =

4--會命中a、b、c,無法命中d

a =

1and c =

3--會命中 a

b =

2c =

3d =

4--沒有從最左邊開始,沒有命中索引,用的是全表掃瞄

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫索引

索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...