2011-11-04 134 views
1

我正在索引的工作,我還是有點新。我想根據列CategoryName和ProductName在現有的Northwind視圖上創建一個名爲「Products by Category」的索引。但是我遇到了一個問題,按類別分類的產品不會讓我這樣做,因爲在那裏。名字中有一個空格,但是by會突出顯示。無論如何,要讓它消失,所以我會停止接收錯誤。創建索引

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

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