聚簇索引(聚集索引)、非聚簇索引(非聚集索引),是因為儲存引擎不同引起的,儲存引擎中innodb是聚簇索引、myisam是非聚簇索引,聚簇索引是資料與索引儲存在乙個起,非聚簇索引資料乙個檔案、索引乙個檔案,資料與索引不在乙個檔案中。
mysql的索引以b+tree的資料結構儲存在磁碟,預設儲存引擎為innodb。
innodb
innodb非葉子節點中,指標左閉右開是乙個區間,區間中儲存排序的索引,如1,2,3(資料)p1(指標)5,6,7,p2,8,9,10,p3,根據資料所在區間,根據指標指向另乙個磁碟塊繼續查詢,查詢到後返回資料,葉子介面儲存整行資料。
如果有兩個指標,name非主鍵,設定為索引,查詢該索引表,改索引儲存的資料為id值,然後使用查詢的id值去id索引表去查詢,這種現象叫回表
myisam
葉子節點儲存的是資料的檔案位址,根據位址去資料檔案中進行查詢
學習資料結構**
mysq索引類別
索引都是在儲存引擎層面實現的 1.btree索引 使用b tree資料結構建立的索引,索引值都是按順序存放的,儲存引擎不需要再全表掃瞄,取而代之的是從索引的根節點開始掃瞄,根節點存放了子節點的指標,隨著向下層查詢,隨著查詢值和節點值的比較 指標中右節點葉值的上下限 最終找到記錄。btree索引可以選...
mysql索引儲存 mysql索引和儲存引擎
mysql索引為什麼採用b 樹而不用b樹 1 b 樹只有葉節點存放資料,其餘節點用來索引,而b樹是每個索引節點都會有data域 索引放磁碟中,磁碟io就會增多 2 b 樹所有的data域在葉子節點,並且所有葉子節點之間都有乙個鏈指標。這樣遍歷葉子節點就能獲得全部資料,這樣就能獲得區間訪問了。在資料庫...
Mysq 儲存過程
drop procedure if exists xl 建立儲存過程 delimiter 轉譯字元 使用 代替 create procedure xl begin select from fd car report end delimiter 轉譯字元 使用 代替 call xl 呼叫儲存過程 de...