首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Declare传参查询速度较快,直接放入参数执行sql却特别慢,求大牛给缘故

2013-11-29 
Declare传参查询速度较快,直接放入参数执行sql却特别慢,求大牛给原因1.有一段sql,在使用declare传参时查询

Declare传参查询速度较快,直接放入参数执行sql却特别慢,求大牛给原因
1.有一段sql,在使用declare传参时查询时间不到1秒,但如果直接将参数放入sql中查询需要10秒以上。
2.查看执行计划,其中直接传参时,有一个视图中时间的比较开销达到99%。
于是我把时间范围调大,理论上数据应该更多才是,反而查询时间不到1秒。

两个不太正常的现象,求原因 declare传参 时间范围调大
[解决办法]
你可以看看这个:

参数嗅探 Parameter Sniffing 
http://www.cnblogs.com/lyhabc/articles/3222179.html

其实就是,当你用变量来传值的时候,是sql server做出的一种折中的判断,来生成了一个执行计划,这个执行计划一般都不是最优化的。。

而你直接传值,很奇怪,反而生成了比较慢的执行计划,我觉得,你可以尝试更新统计信息:

update statistics 表
[解决办法]
如果你这个是存储过程的话,重编译一下,如果有效果,可能就是参数嗅探

热点排行