我对sql server的行为感到有点困惑。
我有一个很大的存储过程,执行很多步骤。如果我这样开始:
Exec [MyStoredProcedure] @MyBoolean=0
直接在管理工作室中调用存储过程的内容需要更长的时间。 我在stackoverflow上看到了它可能来自参数的答案所以我添加了:
declare @IMyBoolean bit
select @IMyBoolean=@MyBoolean;
之后用@IMyBoolean做所有事情,但结果并不是决定性的,它有点好但不是那么多:
sp:4分钟
sp with parameter interface:3分钟
直接sql 2分钟
有没有人对此行为有任何解释?
这是xmlplan
答案 0 :(得分:0)
对于计划中显示的每个查询批次,您的索引缺失,影响超过90%。
按照查询优化器的建议创建这些索引(右键单击索引详细信息 - 绿色文本 - 并选择缺失索引详细信息)。
然后回发新结果。应该快得多,因为大多数表扫描都会变成索引搜索。
如果需要,下一步是微调这些索引以涵盖更多查询。