Как вы перечисляете все индексированные представления в SQL Server? - PullRequest
17 голосов
/ 11 февраля 2011

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

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

Ответы [ 2 ]

21 голосов
/ 11 февраля 2011
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
13 голосов
/ 25 января 2015

Мне нравится использовать более новые системные таблицы:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...