2011-11-04 3 views
1

저는 인덱스에 대해 연구 중입니다. 저는 여전히 조금 새로운 것 같습니다. CategoryName 및 ProductName 열을 기준으로 "Products by Category"라는 기존 Northwind 뷰에 인덱스를 만드는 것으로 가정합니다. 하지만 카테고리로 분류 된 제품으로 인해 제품이 문제를 일으키지 않을 것입니다. 이름에 공백이 있지만 강조 표시가 나타납니다. 어쨌든 사라져 버리면 오류가 중지됩니다.인덱스 만들기

CREATE INDEX IDX_categoryproducts 
ON dbo.Products by catergory (CategoryName,ProductName) 
+0

by by 카테고리에서 제품명. 범주 이름은 범주별로 제품에 있습니다. – norris1023

답변

1

편집 : 단지 사용자가 Northwind을 사용하고있는 것으로 나타났습니다. 다음과 같이 뷰 정의를 인덱스 가능하도록 변경해야합니다.

ALTER VIEW [dbo].[Products by Category] 
WITH SCHEMABINDING 
AS 
SELECT Categories.CategoryID, 
     Categories.CategoryName, 
     Products.ProductID, 
     Products.ProductName, 
     Products.QuantityPerUnit, 
     Products.UnitsInStock, 
     Products.Discontinued 
FROM dbo.Categories INNER JOIN dbo.Products ON Categories.CategoryID = Products.CategoryID 
WHERE Products.Discontinued <> 1 

GO 

CREATE UNIQUE CLUSTERED INDEX ix ON [dbo].[Products by Category] (CategoryID, ProductID) 

CREATE NONCLUSTERED INDEX IDX_categoryproducts ON dbo.[Products by Category] (CategoryName,ProductName) 
+0

고마워하지만 그 작동하지 않는 원인보기에 인덱스를 만들려고하는데 스키마가 그렇게 할 수 없습니다. 인덱스를 만들 수 있도록 스키마를 어떻게 수정할 수 있습니까? – norris1023

+0

@sha - 그건 다른 질문입니다. 뷰가 인덱싱 할 요구 사항을 충족하는지 확인해야합니다. 'WITH SCHEMABINDING'이 생성되며, 생성 한 첫 번째 색인은 고유 한 클러스터가되어야합니다. –

+0

예. 이미 만들어진 첫 번째 색인을 만들지 않았습니다. – norris1023

관련 문제