【问题标题】:How do you list all the indexed views in SQL Server?如何列出 SQL Server 中的所有索引视图?
【发布时间】:2011-06-25 04:24:11
【问题描述】:

如何获取 SQL Server 数据库中具有索引(即索引视图)的视图列表?

我发现在开发过程中运行“ALTER VIEW”非常容易,但忽略了我不仅要编辑视图,还要删除现有索引。所以我认为最好有一个小实用程序查询,它会列出所有带有索引的视图。

【问题讨论】:

    标签: sql-server tsql sql-server-2008 metadata indexed-view


    【解决方案1】:
    SELECT o.name as view_name, i.name as index_name
        FROM sysobjects o 
            INNER JOIN sysindexes i 
                ON o.id = i.id 
        WHERE o.xtype = 'V' -- View
    

    【讨论】:

      【解决方案2】:

      我喜欢使用较新的系统表:

      select 
          OBJECT_SCHEMA_NAME(object_id) as [SchemaName],
          OBJECT_NAME(object_id) as [ViewName],
          Name as IndexName
      from sys.indexes
      where object_id in 
        (
          select object_id
          from sys.views
        )
      

      内连接版本

      select 
          OBJECT_SCHEMA_NAME(si.object_id) as [SchemaName],
          OBJECT_NAME(si.object_id) as [ViewName],
          si.Name as IndexName
      from sys.indexes AS si
      inner join sys.views AS sv
          ON si.object_id = sv.object_id
      

      【讨论】:

      • 我建议使用内部联接作为一种良好的做法(尽管在此特定情况下,它可能与查询计划无关)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 2011-02-16
      • 1970-01-01
      • 2021-04-24
      • 2012-02-18
      • 2011-02-23
      • 2011-07-16
      相关资源
      最近更新 更多