每次我做语句效率对比的时候都被这个困扰,同样的语句执行几次后,执行时间大不相同,怎样才能关闭这个缓存呢

解决方案 »

  1.   

    DBCC flushprocindb
    --清除SQL SERVER服务器内存中某个数据库的存储过程缓存内容 DBCC freeproccache
    --从过程缓冲区删除所有元素
    --清理所有数据库的过程高速缓存
      

  2.   

    不能关闭,只能清除~
    方法是使用DBCC语句,2楼已经列出一部分了,其他的可参考联机帮助
      

  3.   

    use 'WITH RECOMPILE' option.EXEC MySproc_Select '12/31/2004' WITH RECOMPILE
      

  4.   

    非常感谢DBCC FLUSHPROCINDB:用于清理一个数据库实例中指定数据库的存储过程使用的缓存。数据库的ID是必输参数。
    在测试时保证以前的存储过程计划不会对测试结果造成负面影响,可以使用这个存储过程。
    例子:DECLARE @intDBID INTEGER SET @intDBID = (SELECT dbid FROM master.dbo.sysdatabases WHERE name = 'database_name') 
    DBCC FLUSHPROCINDB (@intDBID)