有问题请教,在线等!

JonasFeng 2009-05-04 02:38:33
SQL2005中:
我在统计分析的时候,发现很奇怪的现象,我有如下几个参数,@A = '2008-05-01' @B='已关闭' @C= '%0001%'
我直接放在SQL语句中的时候,如下:select * from tabel where A >@A and B = @B and C = @C 速度很快,大概只有5秒不到。
但是我采取如下方式的时候,速度慢的无法接受。
exec @Sql, N'@A,N'@B,N'@C

区别就在于多了一个N.
这如何解释呢?

这个问题该怎么解决呢?
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
JonasFeng 2009-05-04
  • 打赏
  • 举报
回复


冷月兄弟,谢谢你提醒了我,仔细检查了下,确实有这方面的问题。
谢了先
JonasFeng 2009-05-04
  • 打赏
  • 举报
回复
就算是无用,为什么放在代码里速度会快很多呢。其实有很多参数,大概10几个。
我已经将参数的内容全部拿到SQL 里替换了下,速度很快。

但是怎么就放在EXEC 里面所有参数前面加了个N 就不行了呢?而且这N也不是我自己加上去的。是SQL 自动添加的。
ks_reny 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 rucypli 的回复:]
exec @Sql, N'@A,N'@B,N'@C
肯定没去用索引
[/Quote]
有@C= '%0001%' 索引基本無用.
JonasFeng 2009-05-04
  • 打赏
  • 举报
回复
但是为什么我直接把参数放在SQL语句里,去掉前面的N,速度就会很快呢?

这个可以排除索引的问题。

有谁能解释下。
csdyyr 2009-05-04
  • 打赏
  • 举报
回复
GZ
rucypli 2009-05-04
  • 打赏
  • 举报
回复
exec @Sql, N'@A,N'@B,N'@C
肯定没去用索引
ks_reny 2009-05-04
  • 打赏
  • 举报
回复
關注.
JonasFeng 2009-05-04
  • 打赏
  • 举报
回复
自己先顶下!

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧