0

我对 sql server 的行为有点困惑。

我有一个相当大的存储过程,它执行许多步骤。如果我这样开始:

Exec [MyStoredProcedure] @MyBoolean=0

比直接在 management studio 中调用存储过程的内容需要更长的时间。我在stackoverflow上看到了一个答案,它可能来自参数,所以我添加了:

declare @IMyBoolean bit

select @IMyBoolean=@MyBoolean;

之后用@IMyBoolean 做所有事情,但结果不是决定性的,它好一点但没那么多:

sp : 4 分钟

sp带参数界面:3分钟

直接sql 2分钟

有人对这种行为有什么解释吗?

这是xmlplan

4

1 回答 1

0

对于计划中显示的每个查询批次,您都缺少一个影响超过 90% 的索引。

按照查询优化器的建议创建这些索引(右键单击索引详细信息 - 绿色文本 - 并选择缺失索引详细信息)。

然后发回新的结果。应该快得多,因为您的大多数表扫描都将变成索引查找。

如有必要,下一步将微调这些索引以涵盖更多查询。

于 2012-06-27T10:03:26.530 回答