2011-02-10 25 views
12

¿Cómo se puede obtener una lista de las vistas en una base de datos del servidor SQL que tienen índices (es decir, vistas indexadas)?¿Cómo se enumeran todas las vistas indizadas en SQL Server?

Descubrí que es bastante fácil ejecutar un "ALTER VIEW" mientras desarrollo y pasar por alto que no solo estoy editando la vista sino también descartando un índice existente. Así que pensé que sería bueno tener una pequeña consulta de utilidad que me mostraría todas las vistas con índices.

Respuesta

18
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 
9

me gusta usar las nuevas tablas del sistema:

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 
) 
Cuestiones relacionadas