[SQL SERVER]無法使用平行執行計畫

[SQL SERVER]解決SP憑證加解密失敗

最近調校SQL發現,如SQL(如where 條件和擴充欄位)包含使用者函數將無法使用平行計畫,

我個人覺得算是一個BUG,下面使用SQL2014簡單還原該情況

 

select count(*) from dbo.SalesOrderDetail t1 join TransactionHistory t2
on t1.ProductID=t2.ProductID
where t1.CarrierTrackingNumber like '%-98'

 

image

使用平行計畫

 

加上使用者函數

ALTER function [dbo].[uf_myint](@input int)
returns int
--with schemabinding
as
begin
declare @retval int=0
set @retval=@input*2
return @retval
end

 

select count(*)
,dbo.uf_myint(1) as [testint]
from dbo.SalesOrderDetail t1 join TransactionHistory t2
on t1.ProductID=t2.ProductID
where t1.CarrierTrackingNumber like '%-98'

image

無法使用平行計畫

 

目前我的解決方法是移除函數,並把函數邏輯直接寫在SQL

image

 

image

SQL Server查詢優化程式使用平行計畫