欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

強(qiáng)制SQL Server執(zhí)行計(jì)劃使用并行提升在復(fù)雜查詢語(yǔ)句下的性能

 更新時(shí)間:2014年07月18日 10:47:59   投稿:hebedich  
最近在給一個(gè)客戶做調(diào)優(yōu)的時(shí)候發(fā)現(xiàn)一個(gè)很有意思的現(xiàn)象,對(duì)于一個(gè)復(fù)雜查詢(涉及12個(gè)表)建立必要的索引后,語(yǔ)句使用的IO急劇下降,但執(zhí)行時(shí)間不降反升,由原來(lái)的8秒升到20秒。

通過觀察執(zhí)行計(jì)劃,發(fā)現(xiàn)之前的執(zhí)行計(jì)劃在很多大表連接的部分使用了Hash Join,由于涉及的表中數(shù)據(jù)眾多,因此查詢優(yōu)化器選擇使用并行執(zhí)行,速度較快。而我們優(yōu)化完的執(zhí)行計(jì)劃由于索引的存在,且表內(nèi)數(shù)據(jù)非常大,過濾條件的值在一個(gè)很寬的統(tǒng)計(jì)信息步長(zhǎng)范圍內(nèi),導(dǎo)致估計(jì)行數(shù)出現(xiàn)較大偏差(過濾條件實(shí)際為15000行,步長(zhǎng)內(nèi)估計(jì)的平均行數(shù)為800行左右),因此查詢優(yōu)化器選擇了Loop Join,且沒有選擇并行執(zhí)行,因此執(zhí)行時(shí)間不降反升。

由于語(yǔ)句是在存儲(chǔ)過程中實(shí)現(xiàn),因此我們直接對(duì)該語(yǔ)句使用一個(gè)undocument查詢提示,使得該查詢的并行開銷閾值強(qiáng)制降為0,使得該語(yǔ)句強(qiáng)制走并行,語(yǔ)句執(zhí)行時(shí)間由20秒降為5秒(注:使用Hash Join提示是7秒)。

下面通過一個(gè)簡(jiǎn)單的例子展示使用該提示的效果,示例T-SQL如代碼清單1所示:

SELECT *
FROM [AdventureWorks].[Sales].[SalesOrderDetail] a 
INNER JOIN [Sales].SalesOrderHeader b
ON a.SalesOrderID=b.SalesOrderID

代碼清單1.

該語(yǔ)句默認(rèn)不會(huì)走并行,執(zhí)行計(jì)劃如圖1所示:

image
圖1.

下面我們對(duì)該語(yǔ)句加上提示,如代碼清單2所示。

SELECT *
 FROM [AdventureWorks].[Sales].[SalesOrderDetail] a 
 INNER JOIN [Sales].SalesOrderHeader b
 ON a.SalesOrderID=b.SalesOrderID
 OPTION(querytraceon 8649)

代碼清單2.

此時(shí)執(zhí)行計(jì)劃會(huì)按照提示走并行,如圖2所示:

image
圖2.

在面對(duì)一些復(fù)雜的DSS或OLAP查詢時(shí)遇到類似的情況,可以考慮使用該Undocument提示要求SQL Server盡可能的使用并行,從而降低執(zhí)行時(shí)間。

相關(guān)文章

最新評(píng)論