sql-server - 인덱싱 - 스키마 바인딩에 적합하지 않으므로 뷰




SQL Server의 모든 인덱싱 된 뷰를 어떻게 나열합니까? (2)

인덱스가있는 SQL 서버 데이터베이스의 뷰 (예 : 인덱싱 된 뷰) 목록을 얻으려면 어떻게해야합니까?

나는 내가보기에 뷰를 편집하는 것뿐만 아니라 기존 인덱스를 삭제하는 것임을 간과하고 간과하면서 "ALTER VIEW"를 실행하는 것이 매우 쉽다는 것을 발견했습니다. 그래서 나는 인덱스를 가지고 모든 뷰를 정리할 수있는 유틸리티 쿼리를 사용하는 것이 좋을 것이라고 생각했습니다.


나는 새로운 시스템 테이블을 사용하는 것을 좋아한다 :

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

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




indexed-view