工作平台:winxp sp2 Delphi7+mssql2005
在mssql中编写了一个存储过程,在查询分析器中执行的速度很快,大约只需要1~10s的时间,但是在delphi7中,通过ado控件,执行这个存储过程的时候,速度就惨不忍睹,原因不知为何?请大家帮帮忙.
PS:原来这个存储过程在程序中的速度很快,只是这一段时间就突然变得很慢,很诡异.没有一点头绪.其中,仅仅使用select语句而已,应该不是锁的问题

解决方案 »

  1.   

    这个问题以前讨论过,具体的帖地址找不到了.可以肯定的是ADO的设置不对.
      

  2.   

    http://topic.csdn.net/u/20080902/10/a0c3d5a3-eb86-41ad-b45a-27d301ea5b65.html这个是:买不起书的,就下吧,超级经典(二)
    还有个是:买不起书的,就下吧,超级经典(一)这两个贴里面有个专门讲ADO连接SQL SERVER的书.
      

  3.   

    把存储过程换了一个名字,就变快了.不知道是什么原因.是不是delphi自身的原因?还是数据库的原因?
      

  4.   

    是不是你delphi的问题哦,同样问题c#遇见过,控件有点问题
      

  5.   


    存储过程是预编译的, 在第一次执行的时候, 会生成执行计划, 以后执行的时候, 会使用这个执行计划(除非存储过程侯或者显示指定重新编译), 而不是每次执行时都去生成执行计划
    当存储过程涉及的对象结构调整, 或者相关的数据产生了很大变化, 这可能导致原来的计划不适合当前的现状(执行计划过期), 这种情况下应该重新编译存储过程(可以通过 sp_recompile来标记要重新编译的存储过程)
      

  6.   

    哈哈,结帖后再来总结一下:
    使用了 exec sp_recompile @objname='存储过程的名字',然后又执行了一次后,在程序中运行,即可!恢复正常。