我有一個緩慢的報告,我發現哪部分查詢速度慢,它與INSERT
的WHERE
子句有關。在這個WHERE
條款中有一些使報告變慢的功能。如何提高報告的速度由條款中的ISNULL()函數
這些表使用left join
:CshTransBys
& CshTransOwners
。這些表的某些字段:
CshTransBys
的列:(PPCode
,PBCode
,PCCode
,GPCode
,GBCode
,GCCode
,...)。CshTransOwners
的列:(PPCodeTOS
,PBCodeTOS
,PCCodeTOS
,GPCodeTOS
,GBCodeTOS
,GCCodeTOS
,...)。
最後的where
條款中有關ISNULL()
函數的代碼是:
) or
((@Ptype in (11, 13, 15, 17, 19, 21, 23, 25)) and (isnull(PPCodeTOS,PPCode)<>0)) or
((@Ptype in (12, 13, 16, 17, 20, 21, 24, 25)) and (isnull(PBCodeTOS,PBCode)<>0)) or
((@Ptype in (14, 15, 16, 17, 22, 23, 24, 25)) and (isnull(PCCodeTOS,PCCode)<>0)) or
((@PType=0)and (isnull(PPCodeTOS,PPCode) = @PCode)) or
((@PType=1)and (isnull(PBCodeTOS,PBCode) = @PCode)) or
((@PType=2)and (isnull(PCCodeTOS,PCCode) = @PCode))
)
我的問題是,我怎麼能解決這個問題,我的意思是我該如何擺脫那些isnull()
的,由替換別的東西?,在其他地方使用它們?
參數嗅探? – 2014-09-10 08:44:41
按照我的說法,不是「Isnull()」,而是「或」在where子句中影響你的表現。 – AK47 2014-09-10 09:02:02
當我忽略那些IsNull()部分時,速度增加 – user3742119 2014-09-10 09:06:42