如何在SQL Server中列出所有索引视图?

EBa*_*arr 19 t-sql sql-server metadata indexed-view sql-server-2008

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

我发现运行"ALTER VIEW"非常容易,因为我正在开发并忽略了我不仅要编辑视图而且还要删除现有索引.所以我认为有一个小的实用程序查询会很好,这将使用索引列出所有视图.

Joe*_*lli 23

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
Run Code Online (Sandbox Code Playgroud)


Mic*_*art 13

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

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
  )
Run Code Online (Sandbox Code Playgroud)

内连接版本

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
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用内部联接作为一种很好的做法(尽管在这种情况下,它对于查询计划可能并不重要)。 (2认同)