当前位置: 代码迷 >> Sql Server >> 同一个sql语句,在程序中慢,在查询分析器中快,该如何解决
  详细解决方案

同一个sql语句,在程序中慢,在查询分析器中快,该如何解决

热度:59   发布时间:2016-04-24 10:17:30.0
同一个sql语句,在程序中慢,在查询分析器中快
同一个sql语句,在程序参过传参的方式执行慢,在查询分析器中快。

在查询分析器中,使用declare定时参数快,使用sql字符串拼慢。

例如在查询分析器中:

declare @starttime datetime
where createtime > @starttime  快


where createtime > '2014-1-1'    慢
------解决方案--------------------
上一下执行计划,初步预计隐式转换原因
------解决方案--------------------
有很多都可能会影响,执行计划中增加客户端统计信息看看客户端对于整个执行的影响。
------解决方案--------------------
declare @starttime datetime
where createtime > @starttime  快
where createtime > '2014-1-1'    慢

不会是参数的值不一样吧
------解决方案--------------------
前端程序中的写法具体是怎样的? 贴一下才好帮你分析喔.
------解决方案--------------------
sql:batchstring 我好像没见过这样的哦
------解决方案--------------------
我说怎么没见过batchstring呢,
1.sql BatchStarting--开始
2.sql BatchCompleted--结束
这两个一般来说是同一个语句的,除非你监控一个语句的开销,不然选一个就够了
------解决方案--------------------
目前分析,还是因为参数的类型隐式转换导致索引失效
------解决方案--------------------
程序也可以这样写:
declare @starttime datetime
set @starttime='2014-01-01'
where createtime > @starttime

------解决方案--------------------
sqlparameters要指定一个参数类型的,你指定的是啥?
------解决方案--------------------
每一个SQL首次执行的时候都是需要编译的,当然这是自动进行的,所以我们建议传参数,这样就不用每次编译,当然快了,
拼接的结果就是导致SQL总在变,总是第一次执行.
  相关解决方案