索引設計 《資料庫高效優化》 p300

2022-09-22 04:00:14 字數 1410 閱讀 7256

對於查詢中需要作為查詢條件的字段,可以考慮建立索引,當然,最終還要根據效能的需要決定是否建立索引。

建立索引時也要考慮維護成本,不能無序地建立索引。

下面介紹構建戰略性索引的策略

1.b樹索引 b tree

2.點陣圖索引 bitmap

位圖索引不同於傳統的b樹索引,其原理是根據資料列的離散值構建出一張位圖。它應該建立在低基數列,適合集中讀取。

不適合插入和修改,比b樹索引節省空間。它主要應用於資料倉儲和決策支援系統,特點是絕大多數操作是複雜的查詢操作。

匯入資料的操作也是採用批量匯入的方式,幾乎沒有刪除和更新操作。

位圖索引的鎖機制和b樹索引不同,b樹索引中包含所有鍵值非空的rowid,而位圖索引包含的是乙個rowid範圍和範圍

對應的編碼,如果刪除一條記錄,那麼不僅會鎖住這條記錄,而且會鎖定位圖索引中與這條記錄同一索引範圍內的所有記錄。

由此可見,建立位圖索引的表時,鎖的最小粒度變成位圖索引的範圍。這就意味著多個使用者並非訪問時,表被鎖定的概率大大

增大。因此,操作位圖索引時,應採用批量修改、迅速提交的方式。

3.復合索引

當某個索引包含多個索引的列時,這種索引就稱為復合索引。當查詢多個條件為and關係的資料時,可以使用復合索引快速定位

到該資料。對符合索引的使用,需要注意:

復合索引的使用建議:

5.函式索引

除了上述索引外,還有一些其他索引,其中用得比較多的是函式索引。函式索引可以是b樹索引,也可以是點陣圖索引,它將乙個函式計算的結果儲存在索引中,而不是

儲存列資料本身。我們可以把基於函式的索引看作是乙個虛擬列上的索引。總之,索引函式索引,是基於加工過的邏輯列建立的索引。

函式索引適用於基於基礎表中乙個或者多個列的函式或表示式,查詢語句條件列上包含函式的情況。

函式和表示式值預先計算並存放在索引中。要使用函式索引,就要分析表,啟用查詢重寫。

設定函式索引,會減慢dml的速度,因為需要先求函式值或表示式。

檢視references:

hash雜湊索引

hash雜湊索引是根據hash演算法來構建的索引。雖然 hash 索引效率高,但是 hash 索引本身由於其特殊性也帶來了很多限制和弊端,主要有以下這些。

適合:精確查詢非常快(包括= <> 和in),其檢索效率非常高,索引的檢索可以一次定位,不像btree 索引需要從根節點到枝節點,所以 hash 索引的查詢效率要遠高於 b-tree 索引。

不適合:

不適合模糊查詢和範圍查詢(包括like,>,

不適合排序,資料庫無法利用索引的資料來提公升排序效能,同樣是因為hash值的大小不確定;

復合索引不能利用部分索引字段查詢,hash 索引在計算 hash 值的時候是組合索引鍵合併後再一起計算 hash 值,而不是單獨計算 hash 值,所以通過組合索引的前面乙個或幾個索引鍵進行查詢的時候,hash 索引也無法被利用。

最優化設計資料庫

1.應該嚴格執行3nf,讓每個資料表的功能唯一,即只儲存相同類的資料,對於有交叉類的資料,則應該分割成多個功能表。例如如果員工表有員工部門的資訊,則應該分割成兩個表,員工表與部門表,它們之間用fk關聯,這對於資料庫的維護和效能的提公升都有好處。2.primary key 欄位的長度盡量小,能用sma...

資料庫索引設計與優化

1 什麼是索引 在資料庫中,索引的含義與日常意義上的 索引 一詞並無多大區別 想想小時候查字典 它是用於提高資料庫表資料訪問速度的資料庫物件。a 索引可以避免全表掃瞄。多數查詢可以僅掃瞄少量索引頁及資料頁,而不是遍歷所有資料頁。b 對於非聚集索引,有些查詢甚至可以不訪問資料頁。c 聚集索引可以避免資...

資料庫索引 索引優化

二 三星索引 三 合適設計理想索引 謂詞簡單謂詞和複雜謂詞 where字句中的每個條件稱為乙個謂詞。過濾因子 描述了謂詞的選擇性,即表中滿足謂詞條件的記錄行數所佔的比例 過濾因子 ff 結果集的數量 錶行的數量 平均過濾因子 1 不同列值的數量 索引片及匹配列 乙個索引定義乙個索引片,如果where...