2010-06-10 1 views
0

Views, Temp Tables and Direct Queries 사용의 성능을 알고 싶습니다. 저장 프로 시저에서 사용합니다.성능을 높이려면 무엇을 사용해야합니까? 보기/쿼리/임시 테이블

트리거가 실행될 때마다 생성되는 표가 있습니다. 나는이 방아쇠가 설치 시간에 아주 드물게 한 번만 발사된다는 것을 안다.

이제 데이터를 가져 오기위한 여러 곳의 트리거에서 만든 테이블을 사용해야하는데 그 테이블에서 아무도 변경하지 않는다는 것을 확인했습니다. 즉 ReadOnly 표.

내가 가입 및 뷰를 사용하여 임시 테이블

select ... into #tx from triggertable join t2 join t3 and so on 

select a,b, c from #tx --do something 
select d,e,f from #tx ---do somethign 
--and so on 
--around 6-7 queries in a row in a stored procedure. 

를 사용하여 추가 쿼리

select * from triggertable 

말에 대한 결과를 가져 오기 위해 여러 테이블과 함께이 테이블의 데이터를 사용할 수있다

create view viewname 
(
select ... from triggertable join t2 join t3 and so on 
) 

select a,b, c from viewname --do something 
select d,e,f from viewname ---do somethign 
--and so on 
--around 6-7 queries in a row in a stored procedure. 

이보기는 다른 장소에서도 사용할 수 있습니다. 그래서 지금은 모든 곧 쿼리에서보기/임시 테이블/직접 쿼리 사용을 만들 수 있습니다 직접 쿼리

select a,b, c from select ... into #tx from triggertable join t2 join t3 join ... --do something 
select a,b, c from select ... into #tx from triggertable join t2 join t3 join ... --do something 
. 
. 
--and so on 
--around 6-7 queries in a row in a stored procedure. 

을 사용하여 데이터베이스에서보다는 SP

에서 생성됩니다.

이 경우 사용할 수있는 최선의 방법은 무엇입니까?

답변

1

triggertable이 설치시 한 번만 생성되면 테이블을 직접 쿼리하면됩니다. 쿼리를 수행하는 동안 다른 사용자가 triggertable을 업데이트하지 못하게하는 트랜잭션에서 SQL 쿼리를 래핑하는 경우

이 상황에서보기를 사용할 때 이점이 없습니다.

임시 테이블에 triggertable을 복사 할 수는 있지만이 상황에서는 별 도움이되지 않습니다.

0

항상 같은 출처에있는 데이터입니까? 이 경우보기의 색인이 성능을 향상시킬 수 있습니다.

내가 임시 테이블을 볼 수있는 유일한 이유는 WHERE에 모든 하위 쿼리를 사용할 수있는 작은 하위 집합을 선택했는데 한 가지 방법이나 다른 방법을 사용하지 않는다는 것입니다. 너의 질문.

두 옵션

는 함께 사용할 수 있지만 그렇지 않으면 내가 귀찮게하지 않을 단순히 그래서 select triggertable.a, t2.b, t3.c from triggertable join t2 join t3 ...로 직접 테이블을 조회 전체 데이터 등

의 크기 등을 언급되지 않은 많은 요소가 있습니다

+0

예, 트리거 가능 테이블의 소스는 항상 동일합니다. 항상 동일한 열과 이름을 갖습니다. 내가 필요한 것은 여러 다른 저장 프로 시저의 여러 위치에서 해당 테이블의 하위 집합을 사용하는 것입니다.내가 말한이 견해조차도 여러 절차에서 사용될 수 있습니다. –

관련 문제