奇怪的查询效率问题,请高手指点!

skypeople 2012-05-17 09:54:50
是这样的,在我的程序中有一段代码,在循环中执行下面这样一句SQL,
select case when COUNT(1)>0 then 3 else 0 end from IMA25D1 WHERE IMA18DF01=12592
当然每次查询时后面的ID条件是不同的数字。
我发现一百多次的循环居然执行了4分钟,经过调试发现,执行上面查询时就会等待4-6秒。但是奇怪的是不是每次都等,手动调试追踪,发现每执行6次循环,就有一次等待,而其他5次都非常快。我试过在循环中每次用完全一样的SQL查询(不变后面的条件ID)问题依旧一样。找不到原因,但是将数据库服务重启一次就正常了!!
只是,这个问题不是第一回遇到了,不久前也是同样的情况,只是是在另一个循环中,一样是一句简单的SQL查询上,出现同样的现象。就是说这种现象还会发生,需要找到原因解决人!

数据库环境SQL SERVER2008,服务器24小时不关机,前端程序用DELPHI实现,ADO连接数据库。请大家帮忙推测原因所在!!
...全文
95 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxgyj 2012-05-17
  • 打赏
  • 举报
回复
直接在数据库上测试呢,会不会

昵称被占用了 2012-05-17
  • 打赏
  • 举报
回复
改成下面语句试下

select case when COUNT(1)>0 then 3 else 0 end from IMA25D1 with (nolock) WHERE IMA18DF01=12592  
mayuanf 2012-05-17
  • 打赏
  • 举报
回复
开profiler看看
simonxt 2012-05-17
  • 打赏
  • 举报
回复
1、你循环是在数据库里循环还是在程序里循环,如果是程序里循环可能是多个数据连接造成的
2、如果是数据库里做循环查询,会不会是机器上其他进程占用资源引起的?或者用with(readpast)试试呢?

22,301

社区成员

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

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