索引資料結構: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 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...