java面試 資料庫索引全面解析

2021-08-28 07:02:19 字數 985 閱讀 7769

資料庫中查詢操作非常普遍,索引就是提公升查詢速度的一種手段。

b+樹索引 

它就是傳統意義上的索引,它是最常用、最有效的索引。

雜湊索引 

雜湊索引是一種自適應的索引,資料庫會根據表的使用情況自動生成雜湊索引,我們人為是沒辦法干預的。

rtree索引 

在mysql很少使用,僅支援geometry資料型別;相對於btree,rtree的優勢在於範圍查詢。

資料庫以頁為儲存單元,乙個頁是8k(8192byte),一頁可以存放n條記錄。 

頁在b+樹中分為:資料頁和索引頁。 

b+樹的高一般為2-4層,因此查詢某一鍵值的行記錄只需2-4次io,效率較高。

不管是聚集索引還是非聚集索引,它們的邏輯結構都一棵是b+樹,它們的唯一區別在於:

聯合索引 

當查詢條件涉及多列時,可以使用聯合索引。

覆蓋索引 

只需通過輔助索引就能獲取要查詢的資訊,而無需再次通過聚集索引查詢具體的記錄資訊。 

由於覆蓋索引並不包含整行的記錄,因此它的大小遠遠小於聚集索引。 

它比較適合做一些統計操作。

主鍵索引 

在主鍵索引中,索引頁中存放的是主鍵和指向資料頁的偏移量;資料頁中存放的是主鍵和該主鍵所屬行記錄的位址空間。

輔助索引 

在myisam中,主索引和輔助索引(secondary key)在結構上沒有任何區別,只是主索引要求key是唯一的,而輔助索引的key可以重複。

綜上所述,在myisam中,索引檔案和資料檔案分開存放,不管是主鍵索引還是輔助索引,都屬於非聚集索引。

主鍵索引 

索引頁仍然存放主鍵和和指向資料頁的偏移量,但資料頁存放的是完整的記錄。 

也就是在innodb中,資料和主鍵索引是存放在一起的。

輔助索引 

索引節點存放的內容一樣,仍然是鍵值資訊和指向資料頁的偏移量;但資料頁中存放的是鍵值資訊和該鍵值對應的主鍵。然後通過主鍵查詢主鍵索引就能找到該條記錄。

綜上所述:

java面試 資料庫索引全面解析

雜湊索引 雜湊索引是一種自適應的索引,資料庫會根據表的使用情況自動生成雜湊索引,我們人為是沒辦法干預的。rtree索引 在mysql很少使用,僅支援geometry資料型別 相對於btree,rtree的優勢在於範圍查詢。非聚集索引的資料頁只存指向記錄的位址資訊,它真正的資料已經在聚集索引中儲存了。...

資料庫索引全面解析

資料庫中查詢操作非常普遍,索引就是提公升查詢速度的一種手段。b 樹索引 它就是傳統意義上的索引,它是最常用 最有效的索引。雜湊索引 雜湊索引是一種自適應的索引,資料庫會根據表的使用情況自動生成雜湊索引,我們人為是沒辦法干預的。rtree索引 在mysql很少使用,僅支援geometry資料型別 相對...

Java面試 資料庫

分為兩個模組。第一是儲存 檔案系統 第二是程式例項 儲存管理 快取機制 sql解析 日誌管理 許可權劃分 容災機制 索引管理 鎖管理 快速查詢資料,避免全表掃瞄 主鍵 唯一鍵以及普通鍵等 生成索引,建立二叉查詢樹進行二分查詢 生成索引,建立b tree b樹 結構進行查詢 生成索引,建立b tree...