图一
让我们用SQL Server 2005 DMVs来检验计划缓存中特设查询的效果。
select qs.usecounts, cacheobjtype, objtype, qt.text
from sys.dm_exec_cached_plans qs
cross apply sys.dm_exec_sql_text(qs.plan_handle) as qt
order by qt.text
go
注意:下面的查询输出结果被修改成只显示文本字段中的相应资料。
运行查询之后,我们可以从下面的图中看到,每一个查询执行都在内存中存储了一个非常具体的计划,该计划没有参数化,也没有被数据库引擎重新利用。因为这些计划是如此的具体,所以任何这些计划能够被重新使用的可能性很小。很容易看到,如果这是一个使用频率非常高的应用程序,那么服务器内存会很快地消耗。