【发布时间】:2011-10-08 19:48:30
【问题描述】:
我有一个这样定义的表
CREATE TABLE [dbo].[MyTable](
[MyTableId] [bigint] IDENTITY(1,1) NOT NULL,
[SomeTable2Id] [bigint] NOT NULL,
[SomeTable3Id] [bigint] NOT NULL,
[SomeData] [smallint] NOT NULL,
CONSTRAINT [PK_MyTable] PRIMARY KEY NONCLUSTERED
(
[MyTableId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY]
除了上面的 PK_MyTable NONCLUSTERED 索引,我在 SomeTable2Id 和 SomeTable3Id 上还有一些其他的 NONCLUSTERED 索引
我认为在上面创建 CLUSTERED 索引更有意义,但我想知道不创建 CLUSTERED 索引而是创建 NONCLUSTERED 有什么好的理由吗?
PS 有很多关于这些主题的问题,但找不到相关的问题(在前 20 个列表中)。如果有人问过这个问题,请将我重定向到相关的问题帖子。
编辑:考虑MyTable 映射另外两个表SomeTable2 和SomeTable3 的情况,而不是组合键,我们有这个MyTableId 所以大多数时候我的查询有SomeTable2Id 或SomeTable3Id 并请求获取其他 ID。因此,鉴于此表的使用情况,我们真的需要在MyTableId 上创建一个聚集索引或在SomeTable2Id 和SomeTable3Id 上创建两个非聚集索引就足够了吗?
【问题讨论】:
标签: sql performance sql-server-2008 clustered-index non-clustered-index