0

我有一个查询,如下所示,它有一个列上的聚集索引,[Generated_red_ident]。在下面提到的查询的列必须是非聚集索引?索引策略在sql server 2000中查询与group by子句

我可以理解Episode_Number是非聚簇索引的好候选者。 列methd和start_date1怎么样?

另外,我是否也必须在group by子句中的所有列上创建非聚集索引?

请在查询所有coloumn sugest

SELECT [ID], 
     [Number], 
     [Age], 
     [Start_Date], 
     [Pr], 
     [Mthd], 
     [Identifier], 
     CASE 
     WHEN [methd] IN (21, 22, 23, 24,28) THEN 'er' 
     END AS 'ner', 
     CASE 
     WHEN Datepart(dw, [Start_Date1]) in (1,7) THEN 'Weekend' 
     END AS 'weekday' 
FROM [PPL_Data] 
WHERE [Episode_Number] = 1 
GROUP BY [ID], 
     [Number], 
     [Age], 
     [Start_Date], 
     [Pr], 
     [Mthd], 
     [Identifier] 

回答

1

是的,在理想情况下,你应该创建索引。 您可以使用覆盖索引。 请参阅Covered Index

0

两件事情,NC指数的表现很大程度上取决于该指数中第一列的基数。所以你应该考虑列[Episode_Number]的基数。应使用高基数列。同样,在SELECT期间使用DATEPART函数时,如果查询落入75%的使用情况,该值将作为新列保留在表上。 最后一件事是你可以尝试一下,如果你将前7列都包含在Cover Index Vs中,只有少数人能够获得多少性能收益。