Подтвердить что ты не робот

Как вы перечисляете все индексированные представления в SQL Server?

Как вы можете получить список представлений в базе данных SQL-сервера, имеющих индексы (например, индексированные представления)?

Мне было довольно легко запускать "ALTER VIEW" по мере того, как я разрабатываю и забываю, что я не только редактирую представление, но и отбрасываю существующий индекс. Поэтому я подумал, что было бы неплохо иметь небольшой запрос утилиты, который бы перечислил меня со всех представлений с помощью индексов.

4b9b3361

Ответ 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