我经常听到有人说存储过程是预先编译的。这是什么意思?
实际上我们将查询写入存储过程然后进行编译。如果有任何语法错误,它会抱怨。因此,如果是这种情况,则编译将在那个时间点发生。
然后,“Pre”指的是什么?
答案 0 :(得分:4)
它们实际上是预解析的,并且在CREATE和ALTER
上检查了语法/语义查询计划的“编译”按需发生
有关编译和重复使用的概述,请参阅"Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005 "
术语(用你的意思)可以追溯到SQL Server 6.5。上一白皮书链接中突出显示的“新”方式始于SQL Server 7.0
答案 1 :(得分:1)
在Microsoft SQL Server中,存储过程在第一次运行时会编译为查询计划。
在后续运行中,它们有时会从源代码重新编译,但并非总是如此。这就是为什么他们被称为“预编译”。
除非您指定应始终重新编译它们,或者运行sp_recompile
以在下次运行时强制重新编译。
答案 2 :(得分:1)
如果运行它,将不会解析存储过程的sql内容。 sql解析可能非常耗时。
答案 3 :(得分:0)
预编译的:在Microsoft SQL Server中,存储过程在首次运行时被编译为查询计划。在随后的运行中,有时会从源头重新编译它们,但并非总是如此。因此,它们被称为“预编译”