我的工作是大量使用SQL服务器(MSSQL2005)的维护应用程序。
到目前为止,中间服务器将TSQL代码存储在XML中,并发送动态TSQL查询而不使用存储的特效代码。
由于我能够更改这些XML查询,我想将大部分查询迁移到存储的特效库。
问题是如下因素:Optimizing TSQL代码
我大部分的查询具有相同的若针对一个表的条件
样品:
Select
.....
from ....
where ....
and (a.vrsta_id = @vrsta_id or @vrsta_id = 0)
and (a.podvrsta_id = @podvrsta_id or @podvrsta_id = 0)
and (a.podgrupa_2 = @podgrupa2_id or @podgrupa2_id = 0)
and (
(a.id in (select art_id from osobina_veze where podosobina_id in (select ado from dbo.fn_ado_param_int(@podosobina))
group by art_id
having count(art_id)= @podosobina_count))
or ('0' = @podosobina)
)
他们也有相同的地方上的其他表的条件。
我该如何组织我的代码?
什么是正确的方法?
我应该 使表的价值函数,我会用在所有查询
或使用#Temp表和简单的内部连接我的查询到每当proc执行? 或使用表值函数提交#temp?
或留下所有疑问,用这个大的where子句,并希望索引要完成他们的工作。
或使用WITH(语句)