2013-05-03 67 views
0

我有三個數據庫,每個數據庫都有兩個表,爲用戶提供接口更簡單我已經創建了一個視圖,在這6個表中添加了數據庫和表中的一個視圖列,這樣用戶仍然可以過濾如果他/她只想要某些數據。不過,我覺得表現並不盡如人意。我覺得儘管where子句定義了例如來自db1的數據不是必需的,視圖首先獲取所有數據並執行過濾。我怎樣才能使視圖足夠聰明,以避免在這種情況下在第一個位置從db1獲取數據?查看幾個數據庫,如何提高速度?

回答

1

你想要的是分區視圖。

您可以通過指定每個視圖中的表約束創建這些,所以SQL Server將知道是什麼樣的信息存在,而無需取,這裏

-- 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