【问题标题】:What will happen to a multicolumn index (Composite) when one of the column is dropped in Oracle在 Oracle 中删除一列时,多列索引(复合)会发生什么情况
【发布时间】:2018-12-27 10:38:52
【问题描述】:

我在一个表中有 columnA、ColumnB 和一个由这两列组成的复合索引。 现在我要从表中删除 ColumnB。 现在指数会怎样? 我现在是否应该单独使用 ColumnA 重新创建索引。

【问题讨论】:

  • 你不能在测试台上试试这个吗?
  • 感谢@Aleksej 我已经尝试过 .. 得到了相同的结果。需要重新创建索引。删除一列时,它的所有关联索引也会被删除。
  • 对。毕竟,这就是您所期望的......索引如何存在并引用不存在的列?
  • @Aleksej 你是绝对正确的......但它在机器上的行为方式不同(这可能是由于一些缓存)。它删除了索引,并且无法创建具有相同名称的新索引,因为它表明存在相同的索引。但它在另一台机器上运行良好。这让我发布查询以征求专家意见。

标签: database oracle indexing


【解决方案1】:

一个简单的测试:

SQL> create table t (c1 number, c2 number);

Table created.

SQL> create index i on t(c1, c2);

Index created.

SQL> select index_name
  2  from user_indexes
  3  where table_name = 'T';

INDEX_NAME
------------------------------
I

SQL> alter table t drop column c2;

Table altered.

SQL> select index_name
  2  from user_indexes
  3  where table_name = 'T';

no rows selected

SQL>

【讨论】:

    猜你喜欢
    • 2012-01-16
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多