我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划,在生成执行计划之前会去缓存中查找执行计划如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会重用这个执行计划缓存,避免编译,从而提高效率,对于开发者来说,为了达到能够重用执行计 ...
我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划,
在生成执行计划之前会去缓存中查找执行计划
如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会重用这个执行计划缓存,避免编译,从而提高效率,
对于开发者来说,为了达到能够重用执行计划的目的,使用参数化的sql是一个必要的条件。
除了参数化的sql,SqlServer本身也在对一些sql进行自动优化处理。
在SqlServer层面,分为简单参数化和强制参数化两种方式,SqlServer数据库中对sql的解析方式,默认是简单参数化,当然也可以设置为强制参数化。
在简单参数化模式下,SqlServer对查询有一些专门的优化,就是sql查询条件一些变量的值,不会影响到查询的执行计划,
那么SqlServer会自动地进行参数化处理,后续如果有类似的查询,可以使用自动参数化的sql生成的执行计划,避免重编译,从而提高sql的执行效率以及减少服务器资源的消耗。
参数化的设置是一个数据库级别的选项,如下是通过图形界面看到的参数化默认设置方式,默认是“简单”模式,也可以设置为“强制”模式,
也可以通过脚本的方式来设置
--查看数据库的参数化方式select name,is_parameterization_forced from sys.databases where name='dbtest'--默认是简单模式alter database dbtest set parameterization simple--可以设置为强制模式alter database dbtest set parameterization forced
原标题:浅析SqlServer简单参数化模式下对sql语句自动参数化处理以及执行计划重用
关键词:sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。