Индексирование большой таблицы для поиска различных значений в каждом столбце - PullRequest
0 голосов
/ 31 января 2019

Таблица «TestResult» очень большая (20M + строк), но в ней присутствует не каждый 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 голосов
/ 31 января 2019

Как сказал ESG, создание этих трех индексов - правильный путь, но если у вас есть пакетная вставка / удаление / обновление этой таблицы с большим объемом данных, у вас могут возникнуть проблемы с производительностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...