2010-06-17 4 views
0

이 시점까지 모든 데이터베이스 구조 변경을 피할 수있는 공급 업체가 데이터베이스를 제공했습니다. 우리는 곧 관련 프로젝트를 위해 직접 테이블을 쿼리 할 것입니다. 필요한 모든 데이터를 가져 오려면 여러 개의 공용체가있는 큰 SQL 문을 만들어야합니다.공급 업체가 제공 한 데이터베이스 및 성능에보기 추가

select ... from table1 
union 
select ... from table2 
... 
select ... from tableN 

속도는이 프로젝트에서 최우선 순위입니다. 조인을 수행하고 뷰를 쿼리하여 벤더 데이터베이스를 변경하거나 응용 프로그램에서 유니온 문을 실행하는 뷰를 만드는 것이 더 빠릅니까?

나는 공급 업체 데이터베이스를 변경할 때 발생할 수있는 잠재적 인 문제점을 알고 있으므로 피드백을 찾고 있습니다.

답변

1

공급 업체 데이터베이스의 경우 기존 테이블을 변경하는 것을 매우 주저합니다. 당신이 그것을 사용할 유일한 사람이기 때문에보기와 같은 것을 추가하는 것이 조금 더 안전 해 보입니다. 뷰에 대한 나의 가장 큰 관심사는 DB를 변경 한 공급 업체의 업데이트를 얻었고 뷰를 잃어 버릴 수있는 경우입니다.

인덱스 된보기를 사용하지 않으면보기 사용으로 인한 성능 향상을 기대할 수 없을 것 같습니다. 불행히도 유니온 (적어도 SQL Server에서는)을 사용하여 생성 된 뷰에는 인덱스를 생성 할 수 없습니다.

개인적으로 로직에 적용 할 때와 DB에 넣을 때 나는 DB쪽으로 기울어진다. 내 경험상 이러한 유형의 변경 사항은 배포 및 유지 관리가 더 쉽습니다.

만약 내가 당신의 상황에 있다면 나는 당신의 인생을 더 쉽게 만들어 줄 전망을 만들어 낼 것입니다. 그러나 성능 향상을 기대하지 마십시오.

+0

내 걱정은 수정에 대한 내 걱정과 동일하므로 우리는 신속하게보기를 변경/업데이트 할 수 있도록보기를 문서화 (보관)합니다. iSeries에서 데이터를 처리하는 방법을 알고있을 때 SQL 서버가 데이터를 처리하는 방법을 잘 알고 있지 않습니다. 감사합니다. –

1

보기가 더 빠를 것입니다 (개발 시간 제외).

더 빨리 할 수 ​​있다면 UNION ALL을 사용하는 것이 좋습니다. UNION은 중복 된 레코드를 찾아 최종 결과에서 제거합니다. 디자인별로 레코드를 알고있는 경우 (예 : 각 테이블이 다른 대상이나 각 테이블의 날짜 범위가 다릅니다) 중복 될 수 없으면 UNION ALL은 결과 집합을 DISTINCT하지 않으므로 훨씬 빠르게 실행됩니다.

관련 문제