MySQL的儲存引擎對索引的實現

2021-10-04 16:34:36 字數 1091 閱讀 5528

mysql中,常用的兩種儲存引擎是myisam和innodb

mysql中,將表結構、表資料、表索引統一存放在了磁碟中的同一目錄下,mysql安裝目錄下的data資料夾下,以庫進行資料夾劃分

儲存引擎,是形容表的,並非是庫

表結構:.frm檔案

表資料:.myd檔案;my表示myisam,d表示data

表索引:.myi檔案;my表示myisam,i表示index

葉子節點存放的是具體資料的位址值

查詢時,需要先在 .myi 檔案中進行索引的查詢;再根據索引到 .myd 檔案中查詢具體資料

這種資料與索引分開存放的儲存引擎索引,稱為非聚集索引

表結構:.frm檔案

表資料 & 表索引:.ibd檔案

葉子節點存放的是完整的具體資料

這種資料與索引存放在一起的儲存引擎索引,稱為聚集索引

如果在建表時,沒有設定索引,mysql會自動從左到右判斷字段資料是否有重複,將第乙個沒有重複的字段設為預設索引

如果所有欄位都存在重複,則會增加一列rowid欄位(並不是真實存在的)

推薦使用整型的自增主鍵;減少處理成b+tree結構的時間

非主鍵索引結構,其葉子節點儲存的並非是完整的具體資料,而是主鍵的資料值;從而避免了多索引時的冗餘,並保持一致性

mysql 儲存引擎對索引的支援

一 首先給出mysql官方文件給出的不同儲存引擎對索引的支援 從上面的圖中可以得知,mysql 是支援hash索引的,但支援和不支援又和具體的儲存引擎有關係。從圖中看到innodb是支援btree索引,這是我們眾所周知的。但是不支援hash索引。但是innodb儲存引擎支援hash索引是自適應的,i...

mysql儲存引擎的索引區別

mysql儲存引擎的索引區別,這裡只說明myisam和innodb 1.myisam是非聚集索引,它的索引檔案和資料檔案是分離的,底層是通過hash位址指向磁碟的資料位置的,hash位址無法解決範圍查詢 2.innodb的索引是聚集索引,資料檔案和索引檔案是同乙個,資料檔案就是按照b tree組織的...

MySQL的索引和儲存引擎

參考文章內容 mysql索引 黃文博 mysql入門教程 mysql tutorial book 二 關於索引 資料庫儲存引擎是資料庫底層軟體組織,資料庫管理系統 dbms 使用資料引擎進行建立 查詢 更新和刪除資料。不同的儲存引擎提供不同的儲存機制 索引技巧 鎖定水平等功能,使用不同的儲存引擎,還...