programing

뷰가 스키마 바운드되지 않았으므로 'View_Table_Name' 뷰에 인덱스를 만들 수 없습니다.

elecom 2023. 6. 27. 21:42
반응형

뷰가 스키마 바운드되지 않았으므로 'View_Table_Name' 뷰에 인덱스를 만들 수 없습니다.

저장된 프로시저(SQL-Server)에서 보기를 사용하고 있습니다.성능 향상을 위해 해당 뷰의 INDEX를 작성하려고 했습니다.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW VW_Table_Name
AS
SELECT Col1,Col2,Col3 FROM Table_Name 
GO
CREATE UNIQUE CLUSTERED INDEX Index_Name ON [VW_Table_Name](Col1)
GO

다음과 같은 오류가 표시됩니다.

Msg 1939, Level 16, State 1, Line 1 뷰가 스키마 바인딩되어 있지 않기 때문에 뷰 'VW_FML'에 인덱스를 만들 수 없습니다.

SQL Server에서 Index for View를 생성할 수 있습니까?

인덱싱된 뷰에는 하위 쿼리, 결합, 외부 조인 등 다양한 제한이 있습니다.자세한 내용은 이 문서를 참조하십시오.그러나 스키마 바인딩을 사용하여 보기를 작성하기만 하면 됩니다.

CREATE VIEW VW_Table_Name WITH SCHEMABINDING
AS
SELECT Col1,Col2,Col3 FROM Table_Name 
GO

인덱싱된또는 구체화된 뷰를 작성하려고 하기 때문입니다.뷰 위에 클러스터된 인덱스를 작성하는 경우 뷰에 "SCHEMABINDING" 옵션이 있어야 합니다.

보기는 저장된 쿼리에 불과합니다. 인덱스를 만들 경우 인덱스가 해당 쿼리를 사용하여 해당 테이블에서 실행합니다. 이 경우 테이블 아래에서 테이블이 변경되지 않도록 해야 합니다.따라서 이 제약 조건을 적용함으로써 SQL Server는 모든 것을 동기화 상태로 유지합니다.

언급URL : https://stackoverflow.com/questions/8506487/cannot-create-index-on-view-view-table-name-because-the-view-is-not-schema-bou

반응형