在查看实际的执行计划时,即使查询所用的时间少于1秒,它也会显示缺少的索引。
SELECT
Account.AccountID,
Account.Name
FROM
account
LEFT OUTER JOIN accountfeaturesetting afs
ON afs.accountid = account.accountid
and afs.featureid = 'Schedules'
and
afs.settingid = 'EditReasons'
WHERE
ISNULL(afs.Value, '0') = '0'
AND EXISTS
(SELECT 1 FROM program WHERE program.AccountID = account.AccountID
AND program.Active = 1
AND (program.ScheduleEditReasonFlags <> 0
OR program.ScheduleEditReasonFields <> 0))
AND account.IsMaster = 0
AND account.BeginDate IS NOT NULL
执行计划显示:
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[Account] ([IsMaster],[BeginDate])
INCLUDE ([AccountID],[Name])
即使查询仅花费1秒,我们是否仍需要创建索引?应该在什么基础上创建索引?
我将把此查询作为日常工作来运行。
1
一秒钟够快吗?
—
埃里克·达林
不到1秒的时间
—
索姆(Somu)2017年
好吧...够快了吗?
—
Erik Darling
我认为它的速度非常快,因为帐户表有900行。帐户功能设置有21385行
—
索马尔
我想说的是,比您在测试数据库中实际添加的行多添加100倍,然后发布实际的执行计划。然后在添加此索引后将其重新发布,您将看到并了解为什么其他人会推荐或不应用此索引。
—
马吉尔