zoukankan      html  css  js  c++  java
  • SQL Server 2008 创建索引视图(物化视图) 的一点总结

    SQL Server 2008 的索引视图似乎只能通过sql命令的方式创建, 暂未找到可视化创建的办法, 有谁知道吗?

    要点:

    1.必须要加上WITH SCHEMABINDING, 就是绑定到架构.

    2.创建完视图后, 必须紧跟着创建一个CLUSTERED聚集唯一索引.

    3.只支持两部分命名的表或UDF, 如 dbo.SalesOrder. 

    4.涉及到多个表连接时, 不支持left join 或inner join的写法, 只能用from...where的方式或inner join的方式连接. (这一点有时很要命, 如果join多个表, 而这些表又不能都用inner join的方式时.)

    5.不支持table.*这种懒省事的方式, 得一个一个把想要的列写清楚.

    下面是实际代码

    CREATE VIEW vw_SalesOrderIndexView
    WITH SCHEMABINDING
    AS
        SELECT T1.SalesOrderID,T1.CustomerID,T1.ResellerID, T2.ResellerName, T3.CustomerName, T1.SalesOrderID + ' ' + T2.ResellerName + ' ' + T3.CustomerName as FullTextSearch   

        FROM dbo.SalesOrder AS T1

        inner join dbo.Reseller AS T2 on T1.ResellerID = T2.ResellerID

        inner join dbo.Customer as T3 on T1.CustomerID = T3.CustomerID
    GO
    --Create an index on the view.
    CREATE UNIQUE CLUSTERED INDEX IDX_V1
        ON vw_SalesOrderIndexView (SalesOrderID);
    GO

    最后, 打开Microsoft SQL Server Management Studio, 可以在Views下面看到刚才创建的索引视图(index view), 看起来似乎和普通的视图没什么区别, 只有点开看到Indexex里面有IDX_V1索引, 这才能看到具体的区别. 


    至于它的更新, 是自动的, 不需要设置, 我也没找到设置的地方. 总之就是基础表修改后, 会自动传播到索引视图, 估计里面有类似观察者模式之类的机制.

    参考资料:

    http://msdn.microsoft.com/zh-cn/library/ms187864(v=SQL.100).aspx

     

  • 相关阅读:
    USACO 3.3 A Game
    USACO 3.3 Camelot
    USACO 3.3 Shopping Offers
    USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
    USACO 3.3 Riding the Fences
    USACO 3.2 Magic Squares
    USACO 3.2 Stringsobits
    USACO 3.2 Factorials
    USACO 3.2 Contact
    USACO 3.1 Humble Numbers
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/2205744.html
Copyright © 2011-2022 走看看