[SQL SERVER]無法使用平行執行計畫
最近調校SQL發現,如SQL(如where 條件和擴充欄位)包含使用者函數將無法使用平行計畫,
我個人覺得算是一個BUG,下面使用SQL2014簡單還原該情況
select count(*) from dbo.SalesOrderDetail t1 join TransactionHistory t2
on t1.ProductID=t2.ProductID
where t1.CarrierTrackingNumber like '%-98'
使用平行計畫
加上使用者函數
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'
無法使用平行計畫
目前我的解決方法是移除函數,並把函數邏輯直接寫在SQL
SQL Server查詢優化程式使用平行計畫