declare @i datetime
set @i=getdate()
/*
*  sql 语句
*
*/
print datediff(ms,@i,getdate())我得到的毫秒为0,请问,我写的语句有问题吗,虽然我的数据库中记录数为1,但执行时间也应该大于1毫秒吧??另外,我直接执行sql语句,通过sqlserver探查器追踪可以看到其duration为126毫秒,这两种方法不一样,应该相信哪一个阿。还有我通过sqlexpert得到的时间为23毫秒,这到底怎么回事,怎么可以计算出它的执行时间呢

解决方案 »

  1.   

    最规范的办法是SQL事件探查器和set statitics time、 set statitics io直接在SQL里面取时间来判断会有问题
      

  2.   

    print datediff(ms,@i,getdate())
    你的变量@i的值也是getdate()结果当然是0了
      

  3.   

    declare @time datetime
    set @time=getdate()
    select * from 表   --我尝试了一下,只要是很小的表都返回0
    print datediff(ms,@time,getdate())
    看来确实这种方法不太准
      

  4.   

    SET STATISTICS TIME ON 
    select * from authors
    然后看消息,
    SQL Server 分析和编译时间: 
       CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。
    SQL Server 分析和编译时间: 
       CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。(所影响的行数为 364 行)
    SQL Server 执行时间: 
       CPU 时间 = 0 毫秒,耗费时间 = 42 毫秒。
      

  5.   

    太感谢了,谢谢各位,按照上述方法执行了,得到的值确实为0毫秒,
    SQL Server 分析和编译时间: 
       CPU 时间 = 30 毫秒,耗费时间 = 30 毫秒。SQL Server 执行时间: 
       CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。(所影响的行数为 1 行)表 'FLOWDATA'。扫描计数 0,逻辑读 0 次,物理读 0 次,预读 0 次。
    表 'FLOWSTEPORDER'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。
    表 'DOCUMENT'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。
    表 'FLOWLOG'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。SQL Server 执行时间: 
       CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。
    不过,同一条sql为什么执行10遍,每一遍SQL Server 分析和编译时间结果不同,我应该取平均值吗??否则哪一个是其确切的执行时间呢??
      

  6.   

    ???ie缓存可以清理,请问iamltd,数据库怎么清理缓存呢
      

  7.   

    查询分析器中的 显示客户统计 那3个都 打开 开始看 其实主要的影响速度的原因是io读取 主要看的也是io读取 时间只是 一个近似值
      

  8.   

    原先的sql语句运行很慢,我做了优化,所以想对比一下,因此想看看两者的运行时间。比较郁闷的是原语句和后来优化的成本都是100%,只是在两个主要表中占用各不相同,从成本中我可以得到什么信息呢
      

  9.   


    set statistics time on