【发布时间】:2011-06-25 17:15:13
【问题描述】:
我有 2 个表,Items 和 ItemDetails。通常,对此数据的任何查询都是通过 Items_join_ItemDetails 视图执行的,该视图在公共 ItemID 字段上连接两个表。
目前 ItemDetails 在 (Date, ItemID) 上有一个聚集索引,在 ItemID 上有一个非聚集索引。 Items 在 ItemID 上有一个聚集索引。
当查询视图时,它几乎总是针对一个日期范围,这就是为什么聚集索引在 ItemDetails 的 Date 上。但是,这意味着视图必须使用 ItemDetails 的非聚集 ItemID 索引来加入。
如果我切换 ItemDetails 的聚集索引和非聚集索引,性能会更好吗?我可以看到这将如何帮助连接操作,但是我也可以看到它会如何损害查询的日期过滤。
【问题讨论】:
-
可以添加表格+视图吗?
-
这是一个更普遍的问题,即我的索引应该支持联接还是查询,但我很快会尝试发布类似于我的表/视图定义的内容。
-
这些将允许我们评论您是否需要更改要覆盖的索引
-
再想一想,我将从那篇关于覆盖索引的文章中学到什么,看看我自己可以做出哪些改进。不过,我感谢您的帮助。
标签: sql-server performance join view indexing