sql server中使用組合索引需要注意的地方

2021-09-08 22:48:56 字數 1021 閱讀 1464

一、使用組合索引需要注意的地方

1、索引應該建在選擇性高的字段上(鍵值唯一的記錄數/總記錄條數),選擇性越高索引的效果越好、價值越大,唯一索引的選擇性最高;

2、組合索引中字段的順序,選擇性越高的字段排在最前面;如果把低選擇性的列放在最左端,可能會造成無法使用該索引的情況。

3、where條件中包含兩個選擇性高的字段時,可以考慮分別建立索引,引擎會同時使用兩個索引(在or條件下,應該說必須分開建索引);

4、不要重複建立彼此有包含關係的索引,如index1(a,b,c) 、index2(a,b)、index3(a);

5、組合索引的字段不要過多,如果超過4個字段,一般需要考慮拆分成多個單列索引或更為簡單的組合索引;

6、組合索引通常在查詢語句中的where條件使用了組合索引最左邊的列時會最有用。

7、組合索引增加了更新資料成本,增加了儲存索引的成本。另外,在dbms查詢時,優化方案中不一定會選擇到他(有可能直接選擇了單鍵查詢)

8、不要濫用索引。因為過多的索引不僅僅會增加物理儲存的開銷,對於插入、刪除、更新操作也會增加處理上的開銷,而且會增加優化器在選擇索引時的計算代價。

9、太多的索引與不充分、不正確的索引對效能都是毫無益處的。

10、索引的建立必須慎重,對每個索引的必要性都應該經過仔細分析,要有建立的依據。

二、組合索引在查詢中的應用例項 (組合索引 index (a, b, c)

1、下面條件可以用上該組合索引查詢

2、下面條件將不能用上組合索引查詢

3、下面條件將能用上部分組合索引查詢

組合索引在排序中的應用例項 (組合索引 index(a, b)

1、下面條件可以用上組合索引排序

2、下面條件不能用上組合索引排序

Racket中使用Y組合子

關於y組合子,網上已經介紹很多了,其作用主要是解決匿名lambda的遞迴呼叫自己。首先我們來看直觀的遞迴lambda定義,假設要定義階乘的lambda表達,c 中需要這麼定義 func fact null fact x x 1 1 x fact x 1 這種方法非常簡單直接,當然問題也存在,因為這裡...

SQL Server中使用Check約束提公升效能

在sql server中,sql語句的執行是依賴查詢優化器生成的執行計畫,而執行計畫的好壞直接關乎執行效能。在查詢優化器生成執行計畫過程中,需要參考元資料來盡可能生成高效的執行計畫,因此元資料越多,則執行計畫更可能會高效。所謂需要參考的元資料主要包括 索引 表結構 統計資訊等,但還有一些不是很被注意...

在SQL Server中使用索引的技巧

在sql server中,為了查詢效能的優化,有時我們就需要對資料表通過建立索引的方式,目的主要是根據查詢要求,迅速縮小查詢範圍,避免全表掃瞄。索引有兩種型別,分別是聚集索引 clustered index,也稱聚類索引 簇集索引 和非聚集索引 nonclustered index,也稱非聚類索引 ...