2011-11-04 4 views
1

Je travaille sur des index, je suis encore un peu novice. Je suis supposé créer un index sur la vue Northwind existante appelée "Products by Category" basée sur les colonnes CategoryName et ProductName. Mais je rencontre un problème le produit par catégorie ne me laissera pas le faire à cause de la par là. Il y a un espace dans le nom mais le by est mis en surbrillance.Est-ce qu'il y en a pour le faire disparaître alors je vais arrêter de recevoir une erreur.créer des index

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

Le par est dans Produits par catégorie. le nom de la catégorie est dans les produits par catégorie. – norris1023

Répondre

1

Édition: J'ai remarqué que vous utilisez Northwind. Vous devez modifier la définition de la vue pour la rendre indexable comme ci-dessous.

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

Merci, mais sa cause ne fonctionne pas, je suis en train de créer un index sur une vue et le schéma ne lui permet pas de le faire. Comment puis-je corriger le schéma afin qu'il me permette de créer l'index. – norris1023

+0

@sha - C'est une question différente. Vous devez vous assurer que la vue répond aux exigences à indexer. Est créé 'WITH SCHEMABINDING' et le premier index que vous créez doit être unique en cluster. –

+0

ouais je n'ai pas créé le premier index, il a déjà été créé. – norris1023