我有以下大型select查詢,它在08:15返回150萬行。我需要優化查詢選擇大約290列,我不能減少列數以提高速度。SQL Server使用ISNULL優化大型查詢where子句
select Column1 ... Column290
from dob.table1
where (ISNULL(Column50, 1) = 1)
我已閱讀,ISNULL
有性能上的成本,如果WHERE
子句中使用,因爲優化器不使用索引,但訴諸掃描,是否正確?
我試圖找出如何
WHERE (ISNULL(Column50, 1) = 1)
我試着用用CTE重寫,並設置
IP_Column50 = case when IP_Column50 is null then else IP_Column50 end
,改寫我的查詢
select *
from cte
where IP_Column50 = 1
但CTE花了更長的時間。
我讀到這個方法
如果是這樣,考慮與結果創建一個計算列,如果ISNULL(COL1,0)和指數的計算列和你的where子句中使用它
但我我不知道如何實現這一點。任何幫助是讚賞與優化此查詢。
感謝
「Column50」的數據類型是什麼? –