Я выполняю следующий запрос в SSMS и план выполнения, предлагающий добавить индекс для столбцов, которые не являются частью предложения where. Я планировал добавить индекс по двум столбцам, которые используются в предложении where (OID и TransactionDate).
SELECT
[OID] , //this is not a PK. Primary key column is not a part of sql script
[CustomerNum] ,
[Amount] ,
[TransactionDate] ,
[CreatedDate]
FROM [dbo].[Transaction]
WHERE OID = 489
AND TransactionDate > '01/01/2018 06:13:06.46';
Индекс предложения
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[Transaction] ([OID],[TransactionDate])
INCLUDE ([CustomerNum],[Amount],[CreatedDate])
Обновлено
Нужно ли включать другие столбцы? Данные импортируются в эту таблицу через внутренний процесс с использованием класса SQLBulkCopy в .net. Мне интересно, если бы не кластерный индекс для всех столбцов снизил бы производительность. (В моей таблице есть столбец Pk с именем TransactionID, который не нужен, но у меня есть это в таблице на случай, если это потребуется в будущем, иначе SQLBulkCopy лучше работает с кучей. Другой вариант - удалять и воссоздавать индексы до и после операции SQLBulkCopy)