som*_*omu 8 index sql-server execution-plan
在查看实际执行计划时,即使查询不到 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
Run Code Online (Sandbox Code Playgroud)
执行计划显示:
CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[Account] ([IsMaster],[BeginDate])
INCLUDE ([AccountID],[Name])
Run Code Online (Sandbox Code Playgroud)
即使查询只需要 1 秒,我们是否需要创建索引?应该在什么基础上创建索引?
我将把这个查询作为日常工作来运行。
Ken*_*her 15
您现在不需要添加索引。所有“缺少索引”消息意味着这可能会有所帮助。它可能不诚实,或者可能有一个索引更有帮助。
至于什么时候需要添加新索引?好吧,假设您在 account 表中有 100 行,但它还没有真正被使用。几个月后,您将有多达 10,000 行,而查询现在需要半小时或更长时间。那时您可能会考虑添加索引。当我说考虑时,我的意思是在测试环境中对其进行测试,看看它是否真的有所改进。
其他考虑因素包括:
归档时间: |
|
查看次数: |
842 次 |
最近记录: |