如何删除主键的聚集索引

当我们对一个表建立一个主键时,默认会给该主键列添加一条聚集索引,这是数据库内部自动建立的,唯一性约束也会默认创建一个非聚集索引。

create table MyTable
(
   id int identity(1,1) primary key,
   name nvarchar(10) unique
)
  exec sp_helpindex MyTable

 

 

上面我们建立了一个主键id 和唯一性约束的name列,查看表可以看到这时产生了两个索引

聚集索引是一个宝贵的资源,在一些表的中有时我们永远不会用到主键来作为查询条件,或者作为其他表的外键,这时主键的聚集索引

就显得大才小用了,我们希望将聚集索引建立在其他真正需要的字段,不过当我们执行删除操作时会报以下错误

消息 3723,级别 16,状态 4,第 1 行
不允许对索引 'MyTable.PK__MyTable__3213E83F145C0A3F' 显式地使用 DROP INDEX。该索引正用于 PRIMARY KEY 约束的强制执行

不过我们可以先删除主键约束,这样聚集所以就自动删除了

alter table MyTable drop constraint PK__MyTable__3213E83F145C0A3F

我们再看下聚集索引已经不存在了

当然唯一约束所引起的索引也可以同样的方式操作,先删除唯一约束

转载于:https://www.cnblogs.com/fuyun2000/archive/2013/06/07/sql.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值