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函式索引
- Oracle索引梳理系列(六)- Oracle索引種類之函式索引Oracle索引函式
- Oracle優化案例-自定義函式索引(五)Oracle優化函式索引
- 資料型別與函式索引-Oracle篇資料型別函式索引Oracle
- [20190918]關於函式索引問題.txt函式索引
- MySQL 函式索引功能終於可以實現了MySql函式索引
- oracle 函式Oracle函式
- oracle or 函式Oracle函式
- Fission:基於Kubernetes的Serverless函式框架Server函式框架
- Oracle like、不等於、隱式轉換走索引與不走索引情況Oracle索引
- 【Oracle的NVL函式用法】Oracle函式
- 基於函式計算的 BFF 架構函式架構
- Oracle常用函式Oracle函式
- 7 Oracle 函式Oracle函式
- Oracle 字串函式Oracle字串函式
- Oracle 字串函式Oracle字串函式
- Oracle分析函式與視窗函式Oracle函式
- oracle interval日期函式的bug!Oracle函式
- Oracle的LAST_DAY函式OracleAST函式
- Oracle中Decode()函式的使用Oracle函式
- [20180509]函式索引問題.txt函式索引
- MySQL函式索引及優化MySql函式索引優化
- [20211231]函式索引測試.txt函式索引
- oracle的索引Oracle索引
- 【ASK_ORACLE】關於Oracle索引分裂你需要知道的Oracle索引
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- Oracle 自定義函式Oracle函式
- oracle 高階函式Oracle函式
- oracle json 解析函式OracleJSON函式
- Oracle 隨機函式Oracle隨機函式
- Oracle函式彙總Oracle函式
- 用函式索引構造特殊的約束函式索引
- 基於雜湊函式的簽名,Part-1函式
- 部署基於pythonwsgiweb框架的工程到函式計算PythonWeb框架函式
- 介紹基於OpenFaaS函式的knative Build教程 - alexellis函式UI
- 基於Serverless雲函式站點監控的方法Server函式
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- Oracle的SYS_CONNECT_BY_PATH函式Oracle函式
- 6、Oracle中的分組函式Oracle函式