2013-05-03 2 views
0

나는 각 데이터베이스에 두 개의 테이블이있어 사용자 인터페이스를 쉽게 만든다.이 6 개의 테이블을 통해 뷰를 만들고 데이터베이스와 테이블의 뷰에 열을 추가하여 사용자가 여전히 필터링 할 수 있도록했다. 그/그녀는 특정 데이터만을 원한다면. 그러나 나는 그 성능이 그다지 좋지 않다고 느낍니다. 나는 where 절에서 db1의 데이터가 필요 없다고 정의하더라도 뷰가 모든 데이터를 먼저 가져오고 필터링을 수행한다는 것을 알 수 있습니다. 이러한 상황에서 프리스트 장소의 db1에서 데이터를 가져 오는 것을 피하기 위해 뷰를 어떻게 영리하게 만들 수 있습니까?여러 데이터베이스에서 볼 때 속도를 향상시키는 방법은 무엇입니까?

답변

1

원하는 것은 분할 된보기입니다.

당신은, 뷰의 각 테이블에 대한 제약 조건을 지정하여 다음을 만들 수 있도록 SQL 서버가 가져올 필요없이이 정보가 무엇인지 알 수 :

-- On Server1: 
CREATE TABLE Customers_33 
    (CustomerID INTEGER PRIMARY KEY 
       CHECK (CustomerID BETWEEN 1 AND 32999), 
    ... -- Additional column definitions) 

-- On Server2: 
CREATE TABLE Customers_66 
    (CustomerID INTEGER PRIMARY KEY 
       CHECK (CustomerID BETWEEN 33000 AND 65999), 
    ... -- Additional column definitions) 

-- On Server3: 
CREATE TABLE Customers_99 
    (CustomerID INTEGER PRIMARY KEY 
       CHECK (CustomerID BETWEEN 66000 AND 99999), 
    ... -- Additional column definitions) 

전체 설명을 여기에 : http://msdn.microsoft.com/en-us/library/aa933141(v=sql.80).aspx

관련 문제