SQL Azure 切换聚集和非聚集索引
Posted
技术标签:
【中文标题】SQL Azure 切换聚集和非聚集索引【英文标题】:SQl Azure Switching Clusterd and Non Clustered Index 【发布时间】:2016-07-22 08:30:06 【问题描述】:我的桌子上有两个索引:
CREATE CLUSTERED INDEX [IXAddrbookCrtDtm] ON [dbo].[Addrbook]
(
[AbkOrgGrpID] ASC,
[AddrbookID] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
和
ALTER TABLE [dbo].[Addrbook]
ADD CONSTRAINT [PKAddrbook_New]
PRIMARY KEY NONCLUSTERED
(
[AbkOrgGrpID] ASC,
[AddrbookID] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
GO
我只需要一个聚集主键索引而不是以上两个。删除并重新创建表不是一种选择。
有没有类似的
CREATE CLUSTERED INDEX IXAddrbookCrtDtm ON
Addrbook(AbkOrgGrpID,AddrbookID)
PRIMARY KEY WITH (DROP_EXISTING = ON);
这样我就可以删除非聚集索引了吗?
【问题讨论】:
【参考方案1】:删除两个索引并创建新索引,而不是删除表。
涉及的步骤..
删除索引
在 [dbo].[Addrbook] 上删除索引 IXAddrbookCrtDtm
删除约束
更改表 [dbo].[Addrbook] 删除约束 PKAddrbook_New
创建新的主键
alter table [dbo].[Addrbook] 添加主键 (AbkOrgGrpID,AddrbookID)
【讨论】:
Azure SQL DB 是否允许我在不重新创建表的情况下删除聚集索引? 你不需要删除表 有V12,如果你在上面,不是强制性的:sqlmag.com/sql-server/indexes-azure-sql-database-v12以上是关于SQL Azure 切换聚集和非聚集索引的主要内容,如果未能解决你的问题,请参考以下文章
MySQL中怎样创建聚集索引和非聚集索引,求创建这两种索引的SQL语句。谢谢