Oracle基於函式的索引
Oracle基於函式的索引
比如執行如下一條SQL語句:select * from emp where upper(ename) = 'KING',即使在ename上建立了索引,還是會全表掃描emp表,將裡面的ename欄位改成大寫跟常量KING進行比較。如果我們建立一個基於函式的索引,比如:create index emp_upper_idx on emp(upper(ename)); 這個時候,我們只需要按區間掃描小部分資料,然後獲取rowid取訪問表中的資料,這個速度是比較快的。
基於函式的索引,類似於普通的索引,只是普通的索引是建立在列上,而它是建立在函式上。當然這回對插入資料有一定影響,因為需要透過函式計算一下,然後生成索引。但是插入資料一般都是少量插入,而查詢資料一般資料量比較大。為了最佳化查詢速度,稍微降低點插入速度是可以承擔的。
函式索引還有一個功能,只對部分行建立索引。假設有一個很大的表,有一列叫做FLAG,只可能取Y和N。假設大部分資料是Y,小部分資料是N,我們需要將N修改成Y。如果建立一個普通索引,這個索引會非常大,而且將N修改成Y的時候,維護這個索引開銷會很大。不過這個表聽起來比較適合點陣圖索引,但這是一個事物系統(OLTP),可能有很多人同時插入記錄,或者進行修改。那麼點陣圖索引也不適合。所以,如果我們只是在值為N的行上建立索引,就比較好辦了。
只在值為N的行建立索引SQL:create index flag_index on big_table(case flag when 'N' then 'N' end);這樣一個索引大小會大大降低,而且維護成本也會很低的。前提是我們只對值為N的行感興趣。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224278/viewspace-1788003/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於函式的索引函式索引
- Oracle 19c中基於函式的索引Oracle函式索引
- OCP之基於函式的索引函式索引
- 測試建立基於函式的索引函式索引
- 基於函式的索引狀態變化函式索引
- oracle函式索引Oracle函式索引
- [Q]怎樣建立基於函式索引zt函式索引
- Oracle之函式索引Oracle函式索引
- query rewrite和基於函式的索引有關係?函式索引
- 基於函式的索引(function-based index,FBI)函式索引FunctionIndex
- 關於函式索引的問題?函式索引
- Oracle索引梳理系列(六)- Oracle索引種類之函式索引Oracle索引函式
- 函式索引使用細節——自定義函式的索引化函式索引
- 關於函式索引(function-based index)函式索引FunctionIndex
- Oracle中關於函式的使用Oracle函式
- 關於Oracle取整的函式Oracle函式
- 函式索引的問題函式索引
- 函式索引的儲存函式索引
- 函式索引陷阱函式索引
- 資料型別與函式索引-Oracle篇資料型別函式索引Oracle
- Oracle優化案例-自定義函式索引(五)Oracle優化函式索引
- 基於RxJava的函式式Reactive Web框架:datamillRxJava函式ReactWeb框架
- 關於oracle內建函式的使用Oracle函式
- MySQL 函式索引功能終於可以實現了MySql函式索引
- 說說函式索引函式索引
- 索引中使用函式索引函式
- 基於函式計算的 BFF 架構函式架構
- RANK函式基於條件的查詢函式
- Spring基於建構函式和設值函式的依賴注入Spring函式依賴注入
- Oracle 基礎--索引Oracle索引
- deterministic function 函式索引Function函式索引
- SQL優化--函式索引SQL優化函式索引
- sequence 和索引函式呼叫索引函式
- Fission:基於Kubernetes的Serverless函式框架Server函式框架
- [20171202]關於函式索引的狀態.txt函式索引
- 【函式】ORACLE函式大全函式Oracle
- 函式索引的使用細節——常數表示式函式索引
- 關於Oracle自定義分組函式Oracle函式