索引大型表以在每列中查找不同的值

时间:2019-01-31 19:09:46

标签: sql sql-server-2008 indexing

表“ TestResult”非常大(超过2000万行),但其中没有每个Test,Student或ResultType。

我想快速获取唯一的TestId,StudentId和ResultTypeId。 我目前的策略是以下列方式在前面的每个列上都有一个索引。

CREATE NONCLUSTERED INDEX [NCI_TestResult_ResultTypeId] ON [dbo].[TestResult]
(
    [ResultTypeId] 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) ON [PRIMARY]
GO

我每列有一个这样的索引。

这是执行此操作的正确方法,还是有更好的方法来执行所有三个列的索引只有1个的操作?

我正在使用SqlServer 2016

Schema

1 个答案:

答案 0 :(得分:1)

正如ESG所说,创建这三个索引是正确的方法, 但是如果您对此表进行批量插入/删除/更新,且数据量很大, 您可能会遇到性能问题。