查看几个数据库,如何提高速度?
问题描述:
我有三个数据库,每个数据库都有两个表,为用户提供接口更简单我已经创建了一个视图,在这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