내 직업은 SQL 서버 (MSSQL2005)를 많이 사용하는 하나의 유지 관리 응용 프로그램입니다.
지금까지 중간 서버는 TSQL 코드를 XML로 저장하고 저장된 procs를 사용하지 않고 동적 TSQL 쿼리를 보냅니다.
이러한 XML 쿼리를 변경할 수 있으므로 대부분의 쿼리를 저장된 procs로 마이그레이션하려고합니다.
질문 folowing된다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 (statement)을 사용하십시오.