【问题标题】:Alter clustered index column更改聚集索引列
【发布时间】:2013-03-30 03:16:18
【问题描述】:

我在text 列上的表索引上有一个聚集索引。我想用 ID 等不同的列切换该列,如何更改索引?

我无法删除并重新创建,因为它在 Azure 上运行,并且表需要始终具有聚集索引。

用于更改索引中的索引列的 SQL 命令和语法。

改变索引?

【问题讨论】:

  • 您不能在所需列上添加新的聚集索引,然后删除旧的吗?
  • @AjoKoshy:不 - 你可以永远在一张表上拥有多个聚集索引!

标签: sql sql-server indexing sql-server-2008-r2 sql-server-2012


【解决方案1】:

您不能更改聚集索引。

唯一的选择是删除它并使用新列重新创建它。

在您的情况下,您可能必须使用ID 上的新聚集索引重新创建表,然后将数据复制过来。

【讨论】:

    【解决方案2】:

    试试这个:

    create clustered index [your_index_name] 
    on [your_table] 
       ([ID]) 
    with (drop_existing = on)
    

    【讨论】:

    • 它对我不起作用:消息 1907,级别 16,状态 1,第 1 行无法重新创建索引“my_index_name”。新索引定义与现有索引强制执行的约束不匹配。
    • 我猜你的聚集索引也是一个主键。在这种情况下,您确实需要删除并重新创建。
    • 这适用于主键上没有聚集索引。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2014-07-28
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多