【发布时间】:2015-03-20 07:56:34
【问题描述】:
我们正在尝试创建一个基于函数的索引,该索引在 where 子句中有 (不等于),但得到一个错误提示
ORA-00907: missing right parenthesis
使用 子句有什么问题吗?它可以以某种方式工作吗?
CREATE INDEX IX_TEST_TABLE ON TEST_TABLE ((NVL(COL_A, 0) <> NVL(COL_B, 0));
【问题讨论】:
-
您要索引什么查询?比较语句将返回布尔值的内部表示。 Oracle 不支持 SQL 中的布尔值,它们在索引中相对没用,因为只有 2 个值。
-
您的索引表达式是一个不能被索引的布尔值。您需要在索引中包含一些“真实”列
-
感谢宝贵的cmets
-
我知道这与实际问题有所不同,但有没有办法获取 awr 中给出的 sql 查询的堆栈跟踪,我的意思是一种检查来自哪个包的查询流的方法或已触发的程序? tkprof 和 awr 都只显示 sql 和 elspased 时间,解析和获取。
-
@anudeepks - 您应该将其作为一个单独的问题提出。