代码之家  ›  专栏  ›  技术社区  ›  Jose

SQL Server索引视图

  •  4
  • Jose  · 技术社区  · 16 年前

    好吧,我对SQL Server索引视图(使用2008)感到困惑。

    我有一个索引视图

    工作分配详细信息

    当我看到执行计划

    select * from AssignmentDetail
    

    它显示了索引视图应该抽象掉的所有其他表的所有底层索引的执行计划。

    我认为执行计划只是对pk_assignmentdetail(我的视图的聚集索引的名称)的聚集索引扫描,但它没有。

    这个索引视图似乎没有性能提升,我应该怎么做?我还应该创建一个包含所有列的非聚集索引,这样它就不必命中所有其他索引吗?

    任何见解都会受到极大的赞赏

    2 回复  |  直到 16 年前
        1
  •  5
  •   D'Arcy Rittich    16 年前

    SQL Server企业版足够智能,可以在索引视图存在时查找并使用它们。但是,如果您没有运行Enterprise Edition,则需要显式地告诉它使用索引视图,如下所示:

    select * 
    from AssignmentDetail WITH (NOEXPAND)
    
        2
  •  2
  •   Robin Day    16 年前

    索引视图的作用不是加快

    SELECT * FROM MyView
    

    它将帮助您提高性能的是对视图本身的列进行索引,例如。

    SELECT * FROM MyView WHERE ViewColumnA = 'A' and ViewColumnB = 'B'
    

    因此,您可以在viewcolumna和viewcolumnb上有一个索引,它实际上可以存在于不同的表中。

    推荐文章