1、定義
索引是一種資料結果,幫助提高獲取資料的速度
為了提高查詢速度,有很多查詢優化演算法。但是每種查詢演算法都只能應用於特定資料結構之上。
索引就是資料庫建立的滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料
2、目前大部分資料庫系統及檔案系統都採用b tree或其變種b+tree作為索引結構
3、為什麼使用b tree(b+tree)
紅黑樹也可用來實現索引,但是檔案系統及資料庫系統普遍採用b/+tree,何也?
一般來說,索引本身也很大,不可能全存記憶體,往往以索引檔案的形式存在磁碟
索引查詢過程中就要產生磁碟i/o消耗,相對於記憶體訪問,i/o訪問的消耗要高幾個數量級,所以評價乙個資料結構作為索引的優劣最重要的指標就是在查詢過程中磁碟i/o操作次數的漸進複雜度。
換句話說,索引的結構組織要儘量減少查詢過程中磁碟i/o的訪問次數
4、myisam索引實現
myisam引擎使用b+tree作為索引結構,葉節點data域存放資料記錄的位址
myisam中索引檢索的演算法為首先按照b+tree搜尋演算法搜尋索引,如果指定的key存在,則取出其data域的值,然後以data域的值為位址,讀取相應資料記錄。
myisam的索引方式也叫做「非聚集」的,之所以這麼稱呼是為了與innodb的聚集索引區分
5、innodb索引實現
innodb的資料檔案本身就是索引檔案
表資料檔案本身就是按b+tree組織的乙個索引結構,這棵樹的葉節點data域儲存了完整的資料記錄。這個索引的key是資料表的主鍵,因此innodb表資料檔案本身就是主索引
葉節點包含了完整的資料記錄。這種索引叫做聚集索引。
MySQL mysql索引結構及其原理
索引是一種資料結果,幫助提高獲取資料的速度 為了提高查詢速度,有很多查詢優化演算法。但是每種查詢演算法都只能應用於特定資料結構之上。索引就是資料庫建立的滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用 指向 資料 目前大部分資料庫系統及檔案系統都採用b tree或其變種b tree作為索引結...
mysql引擎及其索引結構
mysql 使用的引擎 1 myisam 不支援事務,適用於選擇密集型,插入密集型,mysql 預設的引擎 2 innodb 使用於更新密集型,支援事務,自動災難恢復,行級鎖,外來鍵約束 3 memory 出發點是速度 採用的邏輯儲存介質是記憶體 4 merge 一組 myisam 表的組合 mys...
Mysql學習之索引介紹及其原理
1 索引的分類 1 單值索引 即乙個索引只包含單個列,乙個表可以有多個單值索引。2 唯一索引 索引列的值必須唯一,但是允許有空值。3 復合索引 即乙個索引包含多個列。2 語法 1 建立 create unique index indexname on mytable columnname lengt...