План выполнения показывает, что у вас есть поиск (чтобы найти основную информацию), а также «поиск ключа», что является довольно дорогой операцией, которую вы должны стараться избегать, если можете.
Глядя на запрос, я вижу, что вы используете classid
, ownerid
и capturesource
в предложении WHERE
- так что они должны быть в индексе. Если вы можете, вы также можете «включить» все остальные столбцы в предложении SELECT
вашего запроса в этот индекс, чтобы избежать «поиска ключа».
Так что я бы сказал, попробуйте такой индекс:
CREATE NONCLUSTERED INDEX IX_Test
ON dbo.pcwdepconstraints_bkp (classid, ownerid, capturesource)
INCLUDE (id, version, domain, createdate, lastmodifydate, lastmodifyuserid,
timeperiod, type, value, siteid)
Включая, что многие столбцы имеют смысл, только если это не весь список столбцов из этой таблицы. Эти столбцы будут занимать место, поэтому вы будете тратить больше времени на увеличение производительности запросов и больше дискового пространства. Но если в вашей таблице гораздо больше столбцов и ваш запрос выбирает «только» эти 13 (поскольку они действительно нужны), то INCLUDE
может быть действительно полезным для ускорения процесса.