Oracle有一个查询,用于选择表的现有索引。 例如:
SELECT * FROM user_indexes WHERE table_name = 'CM_WCEL';
但我需要重新创建索引创建语句。 如何获得受影响列等其他信息?
答案 0 :(得分:3)
根据表的创建,下表将包含所请求的信息。
SELECT *
FROM user_ind_columns
WHERE table_name = 'CM_WCEL';
或
SELECT *
FROM dba_ind_columns
WHERE table_name = 'CM_WCEL';
答案 1 :(得分:3)
要获取每个索引的完整DDL,请使用dbms_metadata.get_ddl()
:
select index_name, dbms_metadata.get_ddl('INDEX', index_name) as ddl
from user_indexes
where table_name = CM_WCEL';
DDL作为CLOB返回。根据您使用的SQL客户端,您可能需要进行一些配置更改才能看到完整的代码。例如在SQL * Plus中,在运行select语句之前需要set long 60000
。
答案 2 :(得分:1)
这应该提供所需的信息:
select index_name, column_name
from user_ind_columns
where table_name = 'CM_WCEL';