我可以在数据库表上有多个索引吗?

时间:2014-07-22 20:37:07

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

我在数据库表上有一个现有的索引,我是索引的新手。

我想在一个UniqueID列(自动增量列)上放置一个Clustered Index,因为有很多数据。

桌子上有第二个索引可以吗?

现有指数属于一对多价值:

USE [Archive]
GO
/****** Object:  Index [IX_CustomerWidget]    Script Date: 07/22/2014 16:27:32 ******/
CREATE NONCLUSTERED INDEX [IX_CustomerWidget] ON [dbo].[CustomerWidget] 
(
    [WidgetID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

添加索引也有任何损害 - 这意味着如果它不正确,可以删除而不会损害数据吗?

1 个答案:

答案 0 :(得分:4)

是。拥有聚簇索引(数据在磁盘上的顺序)和非聚簇索引以支持对数据库执行的查询或强制列的不一致是完全正常的。

例如,我可能在IdentityID上有聚集索引,在Date上有非聚集索引,因为我的所有查询都是这样的:Where Date between @Start and @End