工作平台:winxp sp2 Delphi7+mssql2005
在mssql中编写了一个存储过程,在查询分析器中执行的速度很快,大约只需要1~10s的时间,但是在delphi7中,通过ado控件,执行这个存储过程的时候,速度就惨不忍睹,原因不知为何?请大家帮帮忙.
PS:原来这个存储过程在程序中的速度很快,只是这一段时间就突然变得很慢,很诡异.没有一点头绪.其中,仅仅使用select语句而已,应该不是锁的问题
在mssql中编写了一个存储过程,在查询分析器中执行的速度很快,大约只需要1~10s的时间,但是在delphi7中,通过ado控件,执行这个存储过程的时候,速度就惨不忍睹,原因不知为何?请大家帮帮忙.
PS:原来这个存储过程在程序中的速度很快,只是这一段时间就突然变得很慢,很诡异.没有一点头绪.其中,仅仅使用select语句而已,应该不是锁的问题
还有个是:买不起书的,就下吧,超级经典(一)这两个贴里面有个专门讲ADO连接SQL SERVER的书.
存储过程是预编译的, 在第一次执行的时候, 会生成执行计划, 以后执行的时候, 会使用这个执行计划(除非存储过程侯或者显示指定重新编译), 而不是每次执行时都去生成执行计划
当存储过程涉及的对象结构调整, 或者相关的数据产生了很大变化, 这可能导致原来的计划不适合当前的现状(执行计划过期), 这种情况下应该重新编译存储过程(可以通过 sp_recompile来标记要重新编译的存储过程)
使用了 exec sp_recompile @objname='存储过程的名字',然后又执行了一次后,在程序中运行,即可!恢复正常。