好累,加班到现在,但是其实你的负责的工作都已经做完了。可是还需要配合别人,只能等!!! 现在已经凌晨了。。。
工作分配不够好?个人不负责?时间规划不好?
不知道!!!
说入正题,这是问题原型:
SQL 慢的: select * from MyTable where InputTime>‘2015-05-09‘ SQL 快的: Declare @t datetime set @t=‘2015-05-09‘ select * from MyTable where InputTime>@t 第二条比第一条执行的速度快很多!!!
其实我查询了好长时间的资料没查出来什么原因?(连重现都重现不了,是之前记下的问题,引以为戒,每次发现问题需要具体记下来。。。忙了这么就一点收获都没有)
我只想说我以后要用第二种。。。哪位大牛帮帮忙
PS:另外在每次使用SqlParameter时,如果是字符类型的,都尽量加上size,涉及到执行计划缓存的问题
例如:new
SqlParameter(
"@name"
, SqlDbType.Varchar, 40) { Value = name };
反正还是不能下班。。。
我又查了一下:好像微软官方也出现过这样的问题
给出的解决方案是这样的:The
only resolution to this problem is to use a stored querydef query instead of prepared queries.
也许可以这么理解:
将上面的参数化改为这样:exec(‘resolution
select * from MyTable where InputTime >‘‘‘+@t+‘‘‘‘)
暂且就这样吧!主要是现在不能重现,无法验证,如果遇到了,这样先试一下咯
时间: 2024-10-25 00:04:46