数码资讯
强制SQLServer执行计划在复杂查询语句下使用并行提升性能
通过观察执行计划,我们发现以前的执行计划在许多大型表连接中使用哈希连接。由于涉及大量数据的表,查询优化器选择使用并行执行速度更快。我们可以优化你的执行计划,因为该指数的存在,和数据表非常大,滤波值在很宽的范围内的统计信息来估计的行数步,偏差(实际的过滤条件是15000,平均步估计数量大约是800线)
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
通过观察执行计划,我们发现以前的执行计划在许多大型表连接中使用哈希连接。由于涉及大量数据的表,查询优化器选择使用并行执行速度更快。我们可以优化你的执行计划,因为该指数的存在,和数据表非常大,滤波值在很宽的范围内的统计信息来估计的行数步,偏差(实际的过滤条件是15000,平均步估计数量大约是800线),所以查询优化器选择循环连接,并没有选择并行执行,所以执行时间不。
语句在存储过程中实现的,所以我们使用语句直接到一个未公开查询提示,并行开销减少到0的强制性门槛的查询,使报表逼走平行,语句执行时间从20秒减少到5秒(注:哈希连接的是7秒使用)。
这里是一个简单的例子来说明使用这种提示的效果,在这个例子中的T-SQL所示,在1的代码清单所示:
*选择
{ }从AdventureWorks。{销售}。{ salesorderdetail }一
{ SalesOrderHeader B }内加入销售。
在a.salesorderid = b.salesorderid
代码清单1。
默认情况下,语句不并行,执行计划如图1所示。
图1。
接下来,我们向语句添加提示,如清单2所示。
*选择
{ }从AdventureWorks。{销售}。{ salesorderdetail }一
{ SalesOrderHeader B }内加入销售。
在a.salesorderid = b.salesorderid
期权(querytraceon 8649)
代码清单2。
执行计划与提示符平行,如图2所示。
图2。
当面对一些复杂的DSS、OLAP查询,可以考虑使用未公开暗示,SQL Server使用平行尽可能,从而减少执行时间。
语句在存储过程中实现的,所以我们使用语句直接到一个未公开查询提示,并行开销减少到0的强制性门槛的查询,使报表逼走平行,语句执行时间从20秒减少到5秒(注:哈希连接的是7秒使用)。
这里是一个简单的例子来说明使用这种提示的效果,在这个例子中的T-SQL所示,在1的代码清单所示:
*选择
{ }从AdventureWorks。{销售}。{ salesorderdetail }一
{ SalesOrderHeader B }内加入销售。
在a.salesorderid = b.salesorderid
代码清单1。
默认情况下,语句不并行,执行计划如图1所示。
图1。
接下来,我们向语句添加提示,如清单2所示。
*选择
{ }从AdventureWorks。{销售}。{ salesorderdetail }一
{ SalesOrderHeader B }内加入销售。
在a.salesorderid = b.salesorderid
期权(querytraceon 8649)
代码清单2。
执行计划与提示符平行,如图2所示。
图2。
当面对一些复杂的DSS、OLAP查询,可以考虑使用未公开暗示,SQL Server使用平行尽可能,从而减少执行时间。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。