sql语句的奇怪问题,请大家解惑

for_cyan 2008-12-11 01:55:02
最近遇到一个奇怪的问题,一个sql语句在sql查询分析器中执行时间不到2秒,但是在项目中用了spring的jdbc对数据库进行查询时间却超过10秒,用来sql事件探查器跟踪后,发现前者扫描数据不到2万条,后者在事件探查器却成了存储过程来执行扫描了80万条数据。找不到原因,

jdbc的语句转换成了存储过程,这个是我奇怪的地方,把那个自动生成的存储过程来执行时间也是10几秒
取出的数据才10几条而已
项目中所有的sql语句,用事件探查器跟踪后都变成了存储过程来执行,很奇怪
...全文
153 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2008-12-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 for_cyan 的回复:]
引用 2 楼 Haiwer 的回复:
什么存储过程,是sp_executesql还是产生的临时存储过程,最好贴出来看看


exec sp_executesql N' select cnatureid as text, cnaturename as id from natures where cdwdm=@P1 and idelete=0 order by cnaturename ', N'@P1 nvarchar(4000) ', N'06'
像这种
有查询速度差不多快,但是有的sql比较长,在查询分析器中执行时间2秒,产生的存储过程就10秒
[/Quote]
时间的快慢肯定有差距,一般来说是在查询分析器中要快很多.但不会出现你说的扫描的记录不同的现象.
dobear_0922 2008-12-11
  • 打赏
  • 举报
回复
项目中所有的sql语句,用事件探查器跟踪后都变成了存储过程来执行,很奇怪


--------
程序有问题吧,应该可以以文本的方式执行,不需要存储过程的

for_cyan 2008-12-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Haiwer 的回复:]
什么存储过程,是sp_executesql还是产生的临时存储过程,最好贴出来看看
[/Quote]

exec sp_executesql N' select cnatureid as text, cnaturename as id from natures where cdwdm=@P1 and idelete=0 order by cnaturename ', N'@P1 nvarchar(4000) ', N'06'
像这种
有查询速度差不多快,但是有的sql比较长,在查询分析器中执行时间2秒,产生的存储过程就10秒
昵称被占用了 2008-12-11
  • 打赏
  • 举报
回复
什么存储过程,是sp_executesql还是产生的临时存储过程,最好贴出来看看
dawugui 2008-12-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 for_cyan 的帖子:]
最近遇到一个奇怪的问题,一个sql语句在sql查询分析器中执行时间不到2秒,但是在项目中用了spring的jdbc对数据库进行查询时间却超过10秒,用来sql事件探查器跟踪后,发现前者扫描数据不到2万条,后者在事件探查器却成了存储过程来执行扫描了80万条数据。找不到原因,

jdbc的语句转换成了存储过程,这个是我奇怪的地方,把那个自动生成的存储过程来执行时间也是10几秒
取出的数据才10几条而已
项目中所有的sql语句,用事件…
[/Quote]

发现前者扫描数据不到2万条,后者在事件探查器却成了存储过程来执行扫描了80万条数据。

同样的SQL语句?不可能吧.

22,206

社区成员

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

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