这是我第一次尝试在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)
答案 0 :(得分:0)
您的查询不使用可能由基于函数的索引帮助的“函数”(例如UPPER)。 TABLE1
上的子查询与K_ID
和K_SEGMENTS
相关联,因此,如果我确信性能问题与此子查询有关,我要考虑的一件事就是添加一个普通索引(即不是FB索引)这两列。
如果您只是需要提高查询的性能,我首先要看的是解释计划。