Sql 参数化查询是否由ODBC自动缓存?

Sql 参数化查询是否由ODBC自动缓存?,sql,sql-execution-plan,Sql,Sql Execution Plan,我知道参数化查询的查询计划是缓存的,但缓存级别是什么?如果我断开连接,是否会断开查询计划?如果使用不同的命令对象,是否会删除查询计划 简而言之,我需要在应用程序中缓存什么对象(如果有)来保留查询计划?查询计划由SQL Server本身缓存,并且可以跨多个不同的连接回收 在MS SQL Server中,查询和参数签名都将散列到已定位的缓存计划中 这对于可变长度参数很重要;例如,如果未指定VARCHAR参数的大小,将根据提供的参数的实际长度为您选择该参数。这意味着参数长度不同的参数签名也不同。相反,

我知道参数化查询的查询计划是缓存的,但缓存级别是什么?如果我断开连接,是否会断开查询计划?如果使用不同的命令对象,是否会删除查询计划


简而言之,我需要在应用程序中缓存什么对象(如果有)来保留查询计划?

查询计划由SQL Server本身缓存,并且可以跨多个不同的连接回收

在MS SQL Server中,查询和参数签名都将散列到已定位的缓存计划中

这对于可变长度参数很重要;例如,如果未指定VARCHAR参数的大小,将根据提供的参数的实际长度为您选择该参数。这意味着参数长度不同的参数签名也不同。相反,应该指定VARCHAR参数的长度,确保参数签名相同,并允许计划循环

您的客户机代码无需主动执行任何操作即可生效