连接的SQL Server索引性能

时间:2011-02-11 17:25:50

标签: sql-server performance join view indexing

我有2个表,Items和ItemDetails。通常,对此数据的任何查询都是通过Items_join_ItemDetails视图执行的,该视图将公共ItemID字段上的两个表连接起来。

目前,ItemDetails在(Date,ItemID)上有一个聚簇索引,在ItemID上有一个非聚集索引。 Items在ItemID上有一个聚簇索引。

查询视图时,几乎总是针对日期范围,这就是聚集索引在ItemDetails的Date上的原因。但是,这意味着视图必须使用ItemDetails的非聚集ItemID索引进行连接。

如果切换ItemDetails的聚簇索引和非聚簇索引,性能会更好吗?我可以看到这将如何帮助连接操作,但是我也可以看到它会如何影响查询的日期过滤。

1 个答案:

答案 0 :(得分:3)

聚簇索引超过2列,因此ItemID上的连接应来自此索引。仅ItemID上的NC索引可能未使用,至少对于此查询而言。

更重要的是确保indexes are covering:所需的所有列都在索引中。

您有任何性能问题吗?

我们还需要表格和视图定义来提供进一步的建议。