Oracle聯合索引

2021-09-02 12:40:10 字數 903 閱讀 6736

oracle 聯合索引

我現在用的是oracle 9i

1.乙個表建立多少個索引比較合適?比如說不大於5個

這個沒有定論,樓主要綜合查詢效率和dml效率自己確定,索引可以加快select的查詢速度,但也會降低delete,insert和update等dml語句的執行速度。

2.聯合索引比單索引的效率高麼?

如果聯合索引中的多個欄位都在where謂詞中出現了,則聯合索引效率比單列索引高,因為通過多個條件可以從索引中過濾得到更少的記錄條數,也就減少了需要回表掃瞄的次數,甚至可以直接在聯合索引中得到所查的所有結果,則不再需要回表。

但是由於多列的聯合索引肯定要比單列索引大,也就是說同樣的索引需要儲存的物理塊要多於單列索引,所以,如果查詢中只出現了聯合索引中的某一列,則其效率不如單列索引。

3.compress 這個壓縮 ,能起到什麼作用?

沒研究過

4.上網上查資料時,都說oracle使用聯合索引需要前導列,這個和版本有關係嗎?

前導列跟版本沒有關係。

前導列的概念是這樣的,如果建立了f1,f2上的聯合索引,則在查詢時必須要用到f1,也就是所謂的前導列,該索引才會有效,因為索引是按照前導列排序的,如果where條件謂詞中沒有前導列,則需要執行索引掃瞄才能得到想要的結果,這種情況下其效率往往較差。

5.如果不需要前導列的話,reverse 這個反轉 又起到什麼作用呢?

鑑於前面描述的前導列的概念,我們考慮如下表儲存table(f1,f2);

aa 1

ab 2

ac 3

ad 4

ae 5

如果我們對錶table建立f1上的普通索引,由於按照f1進行排序,所以針對where f1=ad則需要遍歷所有的a開始的索引,而如果對f1建立reverse索引,則由於da只有乙個,則可以更快的得到需要的結果。

MySQL聯合索引or MySQL聯合索引命中條件

轉於 首先明確 為什麼要用聯合索引?對於查詢語句 select e.from e where e.e1 1 and e.e3 2 涉及到兩列,這個時候我們一般採用乙個聯合索引 e1,e3 而不用兩個單列索引,這是因為一條查詢語句往往應為mysql優化器的關係只用乙個索引,就算你有兩個索引,他也只用乙...

mysql聯合索引詳解 mysql 聯合索引詳解

聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。兩個或更多個...

mysql聯合索引技術 mysql 聯合索引詳解

聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。兩個或更多個...