3、下面是结果,当然,也可以在where条件中用like来减少查找的数据量:也可以使用ctrl+alt+a来开启活动监视器来查找运行时间长的查询。

  4、现在来把Optimize for Ad hoc Workloads设为1:

 EXEC sp_configure 'optimize for ad hoc workloads', 1
RECONFIGURE
GO

  5、然后再次清空缓存:

DBCC FREEPROCCACHE
GO

  6、再次执行语句:

USE AdventureWorks
GO
SELECT  *
FROM    Sales.SalesOrderDetail
WHERE   SalesOrderDetailID = 43659
GO

  7、可以执行下面的语句检查是否有新的缓存进入:

SELECT  CP.usecounts AS CountOfQueryExecution ,
        CP.cacheobjtype AS CacheObjectType ,
        CP.objtype AS ObjectType ,
        ST.text AS QueryText
FROM    sys.dm_exec_cached_plans AS CP
        CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS ST
WHERE   CP.usecounts > 0
        AND ST.text LIKE '%SELECT  *  FROM    Sales.SalesOrderDetail  WHERE   SalesOrderDetailID = 43659  %'
        AND CP.cacheobjtype = 'Compiled Plan'
GO