如何在 SQL Server 2012 中预编译 SQL 语句(查询)

How to make SQL statement (query) precompiled In SQL Server 2012

我们的 asp.net 应用程序中有许多小的 SQL 查询。我们在数据库中也有一些存储过程。

我们无法为每个 SQL 语句创建存储过程。

我们如何使那些 SQL 查询预编译,以便在每次执行查询时忽略编译时间?给我们举个小例子。

预编译查询的唯一方法是使用存储过程和参数查询。每当您 运行 查询时,SQL 服务器都会将已编译的执行计划保存在缓存中,因此如果您的应用程序中经常使用查询,SQL 服务器会将其保留更长时间。

请注意,如果您使用临时查询,则不会发生这种情况。 如果 query1 与 query2 甚至有 1 个字符不同 SQL 假设它们是 2 个不同的查询。

所以尽可能多地使用参数查询。这也可以帮助您防止 SQL-Injection。

为了进行结构化的数据库编程,最好使用存储过程。 SP 的行为类似于参数查询,实际上会阻止您使用临时查询。

如果您搜索 "SQL Sever Execution Plan Cache"

,您可以在网络上找到很多文章

如果你需要深入了解这些东西,请阅读这本书:

Microsoft SQL Server 2012 内部结构

这 link 为您提供了更深入的信息。

Chaching Mechanisms