資料庫中查詢操作非常普遍,索引就是提公升查詢速度的一種手段。
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面試 資料庫索引全面解析
資料庫中查詢操作非常普遍,索引就是提公升查詢速度的一種手段。b 樹索引 它就是傳統意義上的索引,它是最常用 最有效的索引。雜湊索引 雜湊索引是一種自適應的索引,資料庫會根據表的使用情況自動生成雜湊索引,我們人為是沒辦法干預的。rtree索引 在mysql很少使用,僅支援geometry資料型別 相對...
java面試 資料庫索引全面解析
雜湊索引 雜湊索引是一種自適應的索引,資料庫會根據表的使用情況自動生成雜湊索引,我們人為是沒辦法干預的。rtree索引 在mysql很少使用,僅支援geometry資料型別 相對於btree,rtree的優勢在於範圍查詢。非聚集索引的資料頁只存指向記錄的位址資訊,它真正的資料已經在聚集索引中儲存了。...
sql資料庫壓縮的全面解析
請按步驟進行,未進行前面的步驟時,請不要做後面的步驟,以免損壞你的資料庫.一般不建議做第4,6兩步,第4步不安全,有可能損壞資料庫或丟失資料。第6步如果日誌達到上限,則以後的資料庫處理會失敗,在清理日誌後才能恢復。sql資料庫壓縮步驟一 清空日誌 dump transaction 庫名 with n...