本篇文章主要介绍了" SQL Server在执行SQL语句时,表之间驱动顺序对性能的影响",主要涉及到方面的内容,对于SqlServer感兴趣的同学可以参考一下:
环境:SQL Server2012 SP3 企业版,开发服务器,并没有什么负载,全库索引统一Rebuild过 经反复执行验证过,不算太复杂的SQL(存储过程中代...
环境:SQL Server2012 SP3 企业版,开发服务器,并没有什么负载,全库索引统一Rebuild过
经反复执行验证过,
不算太复杂的SQL(存储过程中代入参数抠出来的SQL代码)
默认情况下,执行完成需要3秒钟
非要用红色圈中子查询中的表(是一个相关子查询)去驱动其他表,

添加OPTION(FORCE ORDER)后,强制连接顺序,用其他表驱动子查询,1秒钟

默认情况下,IO消耗的比较少(相比强制驱动顺序),但是CPU消耗的比较多,但是整体时间的消耗比强制驱动顺序要多
强制表的驱动顺序的时候,IO比默认情况下要打,但是,CPU消耗的比较少,整体上耗时较短
后记:
我一直就怀疑一个问题,SQL Server内部评估执行计划的时候,IO的权重要比其他的资源权重要大,
遇到不止一次两次类似问题了,
SQL Server总是“喜欢”选择IO较小的执行方式去完成一个查询,但是这个查询方式,从时间上看,并不一定是最快的
以上就介绍了 SQL Server在执行SQL语句时,表之间驱动顺序对性能的影响,包括了方面的内容,希望对SqlServer有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_1711666.html