我目前正在研究一个广泛使用的.NET CMS系统的性能问题,其中有一张表格大约有500万条记录,这是问题的根源。在我的本地开发环境中,仅查询此表格的内容就需要2分钟。
查看表格的模式,我注意到只有一个唯一的非聚集索引和没有聚集索引。
表格和索引定义如下:
CREATE TABLE [dbo].[MyTable](
[Id] [uniqueidentifier] NOT NULL,
[ItemId] [uniqueidentifier] NOT NULL,
[Language] [nvarchar](50) NOT NULL,
[FieldId] [uniqueidentifier] NOT NULL,
[Value] [nvarchar](max) NOT NULL,
[Created] [datetime] NOT NULL,
[Updated] [datetime] NOT NULL
)
CREATE UNIQUE NONCLUSTERED INDEX [IX_Unique] ON [dbo].[MyTable]
(
[ItemId] ASC,
[Language] ASC,
[FieldId] ASC
)
这个表上的索引有什么建议可以提高查询性能?特别是,通常在一个表上定义聚集索引是否是一个好的实践?
谢谢。