【发布时间】:2015-07-02 09:52:06
【问题描述】:
如何创建查询以返回从基于 Oracle 函数的索引中引用的用户列?
例如。我创建了一个索引,例如:
CREATE INDEX MY_INDEX ON MY_TABLE (SQRT(MY_COL));
对于基于非函数的索引,我只查询 ALL_IND_COLUMNS,例如:
SELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION
FROM ALL_IND_COLUMNS
WHERE INDEX_NAME = 'MY_INDEX'
但是,此查询返回系统生成列的 COLUMN_NAME,例如“SYS_NC00012$”,而不是基于函数的索引使用的实际表列“MY_COL”。
我知道我可以查询 DBMS_METADATA 并读取返回的索引创建 DDL
SELECT DBMS_METADATA.GET_DDL('INDEX', 'MY_INDEX') AS QUERY_STRING FROM DUAL
但这意味着我必须解析对我的目的而言不可靠的函数文本。
因此,谁能给我指出正确的方向,我该如何精确地确定基于函数的索引定义在哪些实际表列上?
【问题讨论】: