一个很复杂的SQl语句,没有使用参数变量。先通过ado.net执行,通过分析器截获发现用时1分多。把语句拷贝出来,在查询分析器中执行只需8秒。然后再通过ado.net执行还是1分多。数据库有数据1000W左右。那位高手指点下,如何查找原因。

解决方案 »

  1.   

    查询分析器中执行语句是直接从数据库中获取数据,没有中转的过程.
    通过ado.net执行,ado是个中间控件,所以可能存在同样的语句速度相差很大的可能.
      

  2.   

      反复执行多次都一样 ,ado.net在一分左右。查询分析器中执行只需8秒。
      
      

  3.   

    可用Profiler看一下两次执行所用的实际执行时间,这样好进一步的排查问题。
      

  4.   


      是通过Profiler 截取的实际查询时间。
      

  5.   

    sql语句大吗,是否有可能是sql通过ado执行时,要先编译一遍?你把它写成存储过程再比较一下?
      

  6.   

    ado执行时比查询分析器多了传值/赋值的操作,1000条数据不算少,再加上系统消耗的时间,也许比较正常
      

  7.   

    整个查询字符串有3000多个字符 。采用的是字符串拼接的方式,没有参数。通过微软的SQlhelp执行。
      

  8.   

    通过修改Sql语句 ,绕开了这个问题,没办法,没找到原因。期望高手解答。