我設計了5個存儲過程,它們幾乎使用相同的連接條件,但where子句中的參數或值在不同的運行中各自更改。 使用所有沒有where子句的連接條件創建一個視圖,然後從視圖查詢或在視圖上工作是否最好的解決方案?如果我創建視圖,可以查看自動更新嗎? 我可以做的子查詢或查詢類似的(我覺得我讀的地方的意見不支持子查詢,但不是100%確定)視圖或表函數或其他東西
select count(x1) as x1cnt, count(x2) as x2count
from (
select x1,x2,
(
case when x1 is 'y' then 1 else 0 end +
case when x2 is 'y' then 1 else 0 end
) per
from vw_viewname) v1
where v1.per = 1
更新如下:
In my queries i use joins similar to this also
select c1,c2,c3
FROM [[join conditions - 5 tables]]
Inner join
(
select x1,x2,x3, some case statements
FROM [[join conditions - 5 tables]]
where t1.s1 = val1 and t2.s2 = v2 etc
) s
on s.id = id
,所以我使用連接兩次所以我想我可以減少它使用一些意見
很好的答案.... – gbn 2009-12-22 21:06:04
我的5個SPS在where子句中我不斷加入爲每個新的條件不同,有一次性做到這一點的最好方法,還是應該讓他們保持獨立 – 2009-12-22 21:13:42
我的經驗和理解是將視圖代入代碼中;允許優化器在編譯引用該查詢的查詢時「查看」視圖的定義。因此,將WHERE子句放在視圖內或放大視圖不會影響性能。 「SELECT * FROM」==「SELECT * FROM WHERE 」 –
MatBailie
2009-12-22 21:34:15