快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记怡情娱:《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(3)



前文主要提到简单参数化和强制参数化。下面我们继承懂得简单查询的不够和预查询(Prepared Queries)

■简单查询的不够(Drawbacks of Simple Parameterization)

在前面的查询输出中,你可能已经留意到自动参数化的的一项内容是SQL Server自己选和记怡情娱择了参数的数据类型,不过,这个数据类型可能不是你想要的数据类型。例如,SQL Server在前文查询中假定TinyInt为参数,即范围0-255。此时,假如给定的值跨越此范围,则不会应用相同的自和记怡情娱动参数化查询。

如下示例,即便改变参数值大年夜小的先后顺序,仍旧天生了两个查询计划:

USE Nor和记怡情娱thwind2;

GO

DBCC FREEPROCCACHE;

GO

SELECT FirstName, LastName, Title FROM Employees WHERE EmployeeID = 6;

GO

SELECT FirstName, LastName, Title FROM Employees WHERE EmployeeID = 622;

GO

SELECT usecounts, cacheobjtype, objtype, [text]

FROM sys.dm_exec_cached_plans P

CROSS APPLY sys.dm_exec_sql_text (plan_handle)

WHER和记怡情娱E cacheobj和记怡情娱type = 'Compiled Plan'

AND [text] NOT LIKE '%dm_exec_cached_plans%';

GO

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: