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