sql带参数的存储过程编译对于下次给定不同的参数值无效?
SQL中的参数过程在第一次执行时会自动编译,下次使用时会直接使用此编译过的,据说会提高一点效率.
但看了一段microsoft的文档后,似乎觉得
对于带参数的存储,这种编译没多大作用?
譬如某个 存储过程 带有参数 @p1
第一次执行时 @p1值为5,编译时把这个5也带进去了.
下次执行这个存储时,如果@p1值为8,是不是就需要重新编译执行?
文档说明如下(微软的中文文档看起来总是别扭,比机器翻译的水平强不了多少):
必要时,强制重新编译存储过程的其他原因会阻碍存储过程编译的“参数查找”行为。当 SQL Server 执行存储过程时,该过程在编译时使用的任何参数值都作为生成查询计划的一部分包括在内。如果这些值就是后来调用存储过程时使用的典型值,则该存储过程在每次编译和执行时都会从查询计划中获益。否则,性能可能会受到影响。