正確的理解資料庫索引

2021-08-30 18:19:33 字數 1156 閱讀 7643

索引感念解析

資料庫的索引(index)類似於書的目錄,目錄使讀者不必翻閱整本書就能迅速地找到所需要的內容。索引是一種與表相關的可選的方案物件。通過在表中的一列或多列上建立索引,就能夠為資料的檢索提供快速的訪問路徑,減少查詢時硬碟i/o操作,加快資料的檢索速度。目錄和索引之所以能提高查詢速度,是因為他們是按查詢條件儲存資料的,資料量少而且排列有序,便於採用數學方法進行快速定位。另外還提供了乙個執行內容的指標,即書的頁碼或記錄的rowid。索引的分類主要有以下幾種:

1、標準索引(b_tree index b樹索引)

b樹索引是oracle中最常用的一種索引,在使用create index語句建立索引時。預設建立的就是b樹索引;b樹索引可以有單列索引或復合索引、唯一索引和非唯一索引。b樹索引其實就是一種利用二叉樹的結構來儲存索引的;b樹索引能夠適應多種查詢條件,包括使用「=」的精確匹配、使用like的模糊匹配,以及「《」和「》」的比較條件。

例如:create index bmidx_emp_job on em(job)

2、位圖索引(bitmap index)

在介紹位圖索引之前,首先引入基數的概念。基數是指某個列可能擁有的不重複數值的個數。比如***列的基數為2(性別只能是男女),marital_status列的基數為3(婚姻狀況只能是未婚、已婚或離異)。在b樹索引中對於一些基數很小的列,這種處理方式的效率可能很低。這種情況下比較適合建立位圖索引;

例如:create bitmap index bmidx_emp_job on em(job)

特殊說明:位圖索引由於其特殊的結構,操作某個記錄的時候,會鎖住某一組資料,而不是象普通索引一樣僅鎖住一行資料,因此位圖索引不適合併發訪問十分高的oltp

系統,其***是會導致鎖等待時間大幅度增加,甚至導致死鎖頻繁出現

3、函式索引(funciton index)

在oracle中不僅能夠直接對錶中的列建立索引,還可以對包含列的函式或表示式來建立索引,這種索引稱為「函式索引」。根據函式或表示式的結果的基數情況,函式索引即可以採用普通的b樹索引,也可以採用位圖索引。

特殊說明:由於函式索引實際上儲存了預先計算過的值,所以不再像以前那樣,為表中的每條記錄都計算一次where條件。除此之外,當表中資料更新是,還需要自動更新函式索引。

例如:create index funidx_salcomm on emp(sal+comm+sal*0.2);

mysql深入理解資料庫索引結構

1 資料庫檔案儲存的方式 資料庫檔案儲存都是以磁碟檔案儲存在系統中的,這也是資料庫能持久化儲存資料的原因。2 從資料庫讀取資料的原理 從資料庫讀取資料,先暫且不考慮從快取中讀取資料的情況,那就是從磁碟檔案中讀取資料的,我們知道從磁碟檔案中讀取資料是比較耗時的,資料庫的select操作的時間,取決於執...

詳解資料庫中的索引

1 什麼是索引 2 使用索引為什麼能夠加快查詢速度 3 在什麼樣的條件下使用索引比較合適,而在什麼樣的條件下不能使用索引 4 索引的優缺點 一 索引的定義 1 索引是乙個單獨的 物理的資料庫結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。2 索引是對資料庫...

徹底理解資料庫事務

事務 transaction 一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 在計算機術語中,事務通常就是指資料庫事務。乙個資料庫事務通常包含對資料庫進行讀或寫的乙個操作序列。它的存在包含有以下兩個目的 1 為資料庫操作提供了乙個從失敗中恢...