查看几个数据库,如何提高速度?

时间:2013-05-03 11:16:43

标签: performance tsql sql-server-2012

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

1 个答案:

答案 0 :(得分: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