这个方法不对!你不要学!表变量适合1000以下的数据!20W如果你要用的话等你的内存达到50G以上的时候再说吧
!建议你不要用临时表你直接插入! 或者你用执行计划看看到底是什么原因!或者你再存过程中 加入SELECT GETDATE() AS A1
SELECT GETDATE() AS A2看看那个语句占用你的时间最多(A2与A1de 差值最大的 ) 

解决方案 »

  1.   

    你只有一步的测试才知道哪一句在你的SP花的时间最最多!  还有一个我以前也碰到这样的情况!   就是你把语句拿到外面执行的时候你也要传参数的对吧你用时间探查器看看你传得参数是什么样子的!  
    你见一下这个看看 http://topic.csdn.net/u/20070509/12/47f53963-b0d1-4cd2-8964-cce450bccc21.html 可有帮助呢
      

  2.   

    那你看看试一试!我的意思是你把SP 改为带时间的SP  比如建一个实表 然后运行 在查询分析器中SP修改后的sp 包含insert into表
    select getdate(),标致n 运行后SP看看到底哪里用时间多如果整体时间都不多 那就应该不是SP的问题了 
      

  3.   

    谢谢这位大哥的idea,用你提供的这个方法,我在SP各个主要位置加入了一些时间戳标记,然后找出了整个SP运行时最浪费时间的一段并且对这段代码做了一些改动,现在SP运行的效率比原来好了很多了。非常感谢!
    不过实在没有想懂,这段最浪费时间的代码如果单独运行的话其实也挺快的,搞不懂为什么放到SP中却这么慢了,呵呵~~
      

  4.   

    请教楼上,如何“强制SP重编译”?"WITH RECOMPILE"?