InnoDB儲存引擎(四)索引

2021-09-12 20:34:47 字數 685 閱讀 9189

在本篇部落格中,我將介紹資料索引的原理、實現。

innodb支援三種索引

聚集索引特點

聚集索引優點

非聚集索引特點

該值表示某個表的字段是否具有高選擇性,用來看是否應該建立索引。

比如性別這種,是低選擇性的,取值範圍只有2個,而記錄有成千上萬條,為性別建立索引是沒有必要的。相反,如果取值範圍很大,cardinality很高,那麼建立b+樹索引就有必要了。

聯合索引:由多列組成的索引。

優點:

覆蓋索引:

指從輔助索引中就能獲取到需要的記錄,而不需要查詢聚集索引中的記錄。

優點:

不使用索引的情況

如果範圍查詢的範圍超過整個表的百分之20,那麼優化器不會選擇使用索引,因為雖然索引中資料是順序存放的,但是通過主鍵再去查詢聚集索引b+樹的時候,查詢的資料就是無序的了,這樣磁碟io就從順序讀變成了離散讀,效率太低。

為了減少磁碟的隨機訪問,轉為順序訪問的一系列策略。

將where的部分過濾操作放在了儲存引擎層,優化部分查詢效率

innodb用了雜湊演算法對字典進行查詢,衝突用拉鍊法,雜湊函式用除法雜湊法。

自適應雜湊索引:

對於字典查詢非常迅速,比如select * from table where a=『***x』

對於範圍查詢是不能用自適應雜湊索引的。

倒排索引

MySql的InnoDB儲存引擎 索引

索引分類 1 聚集索引 索引順序與物理順序一致。mysql 的 innodb 中,主鍵索引就是聚集索引。好處是,進行搜尋的時候,因為索引和物理順序一致,所以找資料的時候更快。2 非聚集索引 索引順序與物理順序不一致。非主鍵索引。在非主鍵索引中,又有組合索引 最左索引 也就是查詢的時候如果where條...

InnoDB 儲存引擎

innodb是事務型資料庫的首選引擎,支援事務安全表 acid 支援行鎖定和外來鍵。mysql 5.5.5 之後,innodb作為預設儲存引擎。innodb的主要特性有一下幾項。a.innodb給mysql提供了具有提交 回滾和崩潰恢復能力的事務安全 acid相容 儲存引擎。innodb鎖定在行級並...

InnoDB 儲存引擎

設計上採用了類似於oracle資料庫的架構 接下來 詳細介紹 innodb 儲存引擎的 體系架構 及其不同於其他儲存引擎的特性 一 概述 innodb 儲存引擎 是第乙個完整支援acid事物的 mysql 儲存引擎 特點 1 行鎖設計 2 支援mvcc 3 提供一致性非鎖定讀 4 最有效地利用 以及...