Oracle case when索引 空值索引 位元影像索引

來源:互聯網
上載者:User

T1表裡面有200W條資料,其中ID=2隻有10條記錄,查詢ID=2時就可以用到case when索引。

建索引可以這樣:

CREATE INDEX I_1 ON T1(CASE WHEN ID>1 THEN ID ELSE NULL END);

或者類似CASE ID WHEN 2 THEN 2...或者不需要大於小於,可以用DECODE

查詢的SQL也要改:

SELECT * FROM T1 WHERE ID=2;

改為

SELECT * FROM T1 WHERE (CASE ID WHEN 2 THEN 2 ELSE NULL END)=2;

這個WHERE後面的括弧要跟索引內容一模一樣。總之這還是一個函數索引。

訪問的資料區塊從幾千個下降到幾個。

這個索引原因是空值NULL不加入索引中,這樣索引塊其實只包含ID=2的很少的幾行。

當查詢條件WHERE ID IS NULL時,想使用索引的話,可以這樣建一個聯合索引:

CREATE INDEX I_2 ON T1(ID,0);

將執行索引掃描。

位元影像索引構造與B樹索引不同。假如列GENDER只存在兩個值,在上面建一個位元影像索引的話,就產生兩個位元影像,每個位元影像中包含對應的所有的行號。其中的具體實現比較複雜,還有起止行等等概念。

位元影像索引不適合更新頻繁的應用情境,比如線上聯機系統使用位元影像索引必須謹慎。因為如上,當INSERT 一條GENDER=1的資料,那全表所有GENDER=1的行都會被鎖。

位元影像索引一般適用於分析系統,而更新資料前有必要時也要刪除索引,查詢時再重建。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.