【问题标题】:View over several databases, how to improve speed ?查看多个数据库,如何提高速度?
【发布时间】:2013-05-03 11:16:42
【问题描述】:

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

【问题讨论】:

    标签: performance tsql sql-server-2012


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多