0

我有三个数据库,每个数据库中有两个表,为了使用户界面更容易我已经创建了这 6 个表的视图,并为数据库和表添加了视图中的一列,这样用户仍然可以过滤,如果他/她只想要某些数据。但是我觉得性能没有想象中那么好。我觉得即使 where 子句定义了例如来自 db1 的数据不是必需的,视图也会首先获取所有数据并执行过滤。在这种情况下,如何使视图足够智能以避免从 db1 获取数据?

4

1 回答 1

1

你想要的是一个分区视图。

您可以通过为视图中的每个表指定约束来创建这些,因此 sql server 将知道那里有哪些信息而无需获取它:

IE

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

于 2013-05-03T11:22:38.037 回答