Oracleで関数ベースのインデックスを使用しようとするのはこれが初めてです。しかし、私はそれを実装する方法がわかりません。ネットで検索したところ、UPPER関数インデックスなどを使用したSQLなど、これに関連する簡単な例が見つかりました。ただし、関数ベースのインデックスとは何かを説明することはたくさんありましたが、複雑なSQLの場合にそれがどのように機能するかを説明するものは何も見つかりませんでした。サブセレクトを使用してSQLをフォローしていて、実際にパフォーマンスの問題があり、それを改善するために検索を行ったところ、関数ベースのインデックスと呼ばれるものがあることがわかりました。しかし、今はそれを使用する方法と、パフォーマンスをどのように改善するかがわかりません。これがSQLです。この SQL に関数ベースのインデックスを実装する方法を教えてください (可能な場合)。
INSERT INTO TABLE1( K_ID, KKID, K_SEGMENTS, COL1, COL2, COL3, COL4, COL5, COL6, COL7 , COL8,COL9, COL10)
SELECT DISTINCT K_ID , KKID , K_SEGMENTS , COL1 , COL2 , COL3 , COL4 , COL5 , COL6 , COL7
, COL8 , COL9 , COL10
FROM TABLE2 A
, TABLE3 P
WHERE P.KEY1 = A.KEY1
AND NOT EXISTS (
SELECT 1
FROM TABLE1 B
WHERE 1=1
AND A.K_ID = B.K_ID
AND A.K_SEGMENTS = B.K_SEGMENTS)