deterministic function 函式索引
ORACLE 10g允許建立函式索引,預設情況下只能使用系統函式。如果要建立基於使用者自定義函式的索引。那麼就需要在函式里加上關鍵字“deterministic”。但是使用者仍然可以在今後需要時修改函式。 但是並不會造成索引失效。經試驗發現了一個有趣的現象,總結如下:
[@more@]ORACLE 10g允許建立函式索引,預設情況下只能使用系統函式。如果要建立基於使用者自定義函式的索引。那麼就需要在函式里加上關鍵字“deterministic”。但是使用者仍然可以在今後需要時修改函式。 但是並不會造成索引失效。經試驗發現了一個有趣的現象,總結如下:
create function f1 ( return c*2+1) ;
create index id_t1_c1 on t1(f1(c)) ;
replace function f1 ( return c*2) ;
SQL> SELECT F1(5) FROM DUAL ;
F1(5)
----------
10
SQL> SELECT * FROM T1 WHERE F1(C1) = 101 ;
C1
----------
50
SQL> SELECT C1, F1(C1) FROM T1 WHERE F1(C1) BETWEEN 101 AND 120;
C1 F1(C1)
---------- ---------------------------------------
50 101
51 103
52 105
53 107
54 109
55 111
56 113
57 115
58 117
59 119
10 rows selected
SQL> ALTER INDEX ID_T1_C1 REBUILD ;
Index altered
SQL> SELECT C1, F1(C1) FROM T1 WHERE F1(C1) BETWEEN 101 AND 120;
C1 F1(C1)
---------- ---------------------------------------
51 102
52 104
53 106
54 108
55 110
56 112
57 114
58 116
59 118
60 120
10 rows selected
總結:
1,索引修改後,立即生效,
2, 但是SELECT 的表上相關欄位如果建立了函式索引,且索引未重建,那麼,對於該列計算出的值仍是舊函式值。-----其實ORACLE根本就沒有計算,而是走索引得出來的。
3,重建索引後,計算數值恢復正確值 。
4, 使用自定義函式索引,在維護時需要小心。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/350519/viewspace-1033621/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE FUNCTION函式中DETERMINISTIC測試OracleFunction函式
- 建立函式索引須知DETERMINISTIC函式索引
- 函式DETERMINISTIC函式
- Oracle Deterministic FunctionOracleFunction
- 關於函式索引(function-based index)函式索引FunctionIndex
- 使用自定義函式創Function-Based Indexes時需要使用DETERMINISTIC Functions!函式FunctionIndex
- 函式(FUNCTION)函式Function
- 基於函式的索引(function-based index,FBI)函式索引FunctionIndex
- JavaScript function 函式JavaScriptFunction函式
- oracle function函式castOracleFunction函式AST
- JS:1.3,函式(function)JS函式Function
- Java 8 Function 函式介面JavaFunction函式
- js的函式function(一)JS函式Function
- javascript Function()建構函式JavaScriptFunction函式
- PL/SQL 06 函式 functionSQL函式Function
- SQL 自定義函式FUNCTIONSQL函式Function
- 【MySQL】ERROR 1418 This function has none of DETERMINISTIC, NO SQL, ...MySqlErrorFunctionNone
- 函式索引陷阱函式索引
- oracle函式索引Oracle函式索引
- JavaScript入門-函式function(二)JavaScript函式Function
- Function(函式分享)第二節Function函式
- pipeline function管道函式Function函式
- JavaScript Function 函式深入總結JavaScriptFunction函式
- 函式索引使用細節——自定義函式的索引化函式索引
- 實現call函式,手寫Function.prototype.call函式函式Function
- ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL,ErrorFunctionNoneSQL
- PyTorch:損失函式loss functionPyTorch函式Function
- SAP 的CALL FUNCTION 函式彙總Function函式
- Oracle之函式索引Oracle函式索引
- 說說函式索引函式索引
- 索引中使用函式索引函式
- 高階函式 - Higher Order Function函式Function
- ES6 箭頭函式(arrow function)函式Function
- PHP函式register_shutdown_function的用法PHP函式Function
- JavaScript自執行函式(function(){})()的理解JavaScript函式Function
- 密碼檢驗函式verify_function密碼函式Function
- 基於函式的索引函式索引
- 函式索引的問題函式索引