0

这是我第一次尝试在 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)
4

1 回答 1

0

您的查询不使用基于函数的索引可能有助于的“函数”(例如 UPPER)。您的子查询与andTABLE1相关,因此如果我确信性能问题与此子查询有关,我会考虑的一件事是在这两列上添加一个普通索引(即不是 FB 索引)。K_IDK_SEGMENTS

如果您只需要提高查询的性能,我首先要看的是解释计划。

于 2012-10-10T07:34:33.473 回答