前一段时间,我有一个查询,我为我的一个用户跑了很多。 它还在进化和调整,但最终稳定和运行相当快,所以我们创build了一个存储过程。 到目前为止,如此正常。 存储过程,但是,狗慢。 查询和过程没有实质性区别,但速度变化很大。 [背景,我们正在运行SQL Server 2005.] 一个友好的本地DBA(不再在这里工作)看了一下存储过程,并说“参数欺骗! ( 编辑:虽然它似乎也可能被称为“参数嗅探”,这可能解释了当我试图search出谷歌命中的缺乏)。 我们将一些存储过程抽象为第二个存储过程,将这个新的内部过程调用包装到预先存在的外部过程中,称为外部过程,并且嘿,它和原始查询一样快。 那么,是什么给了? 有人可以解释参数欺骗? 红利信贷 强调如何避免它 build议如何识别可能的原因 讨论替代策略,例如统计数据,指数,关键字,以缓解这种情况