Oracle COLUMN_ID隐式索引创建

时间:2013-02-22 15:41:54

标签: oracle indexing unique-constraint composite-primary-key

Oracle如何使用USER_TAB_COLUMNS视图中的COLUMN_ID?我只需要确认它在创建隐式索引时不使用此内部列排序 - 例如强制执行主键或创建唯一键约束时(即提供的键/约束列以相同的顺序使用 - 左正确而不是这些内部列排序)。 (如果可能的话,请指出我的Oracle文档方向。)。提前致谢。

1 个答案:

答案 0 :(得分:1)

很难找到一些声明它没有做某事的事情,但没有任何说明它会使用column_id来覆盖索引创建。

您可以在文档here中看到对column_id的所有引用;唯一似乎重要的是the all_tab_columns view

您可以通过查询all_ind_columns view来验证索引中使用的列的顺序,您可以在其中查看其column_position之间没有强制关系 - 来自订单列在索引创建命令中列出 - 和column_id

如果您对检查备份约束的索引特别感兴趣,可以执行以下操作:

select ac.owner, ac.table_name, ac.constraint_name, ac.index_owner,
    ac.index_name, aic.column_position, aic.column_name
from all_constraints ac
join all_ind_columns aic on aic.index_owner = coalesce(ac.index_owner, ac.owner)
    and aic.index_name = ac.index_name
order by 1, 2, 3, 6;

...根据需要为所有者或表格添加过滤器。