2011-11-04 133 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