一位报表设计者问我是否可以接受向表中添加新索引以加快特定报表的速度。索引将在单个列 CreatedDate 上,但会包含列。
表上已经有五个索引,我想避免为特定的报告或查询创建单独的索引。但是,我认为单列索引可能在索引交集中很有用,特别是对于可能在多个查询中使用的列,如 CreatedDate。
为了帮助我做出决定,我想知道的是,包含列的索引是否可以用于索引交集,或者包含列是否会阻止索引用于索引交集。
我试过用谷歌搜索这个问题,但没有找到任何关于包含的列对索引交集的影响的信息。
一位报表设计者问我是否可以接受向表中添加新索引以加快特定报表的速度。索引将在单个列 CreatedDate 上,但会包含列。
表上已经有五个索引,我想避免为特定的报告或查询创建单独的索引。但是,我认为单列索引可能在索引交集中很有用,特别是对于可能在多个查询中使用的列,如 CreatedDate。
为了帮助我做出决定,我想知道的是,包含列的索引是否可以用于索引交集,或者包含列是否会阻止索引用于索引交集。
我试过用谷歌搜索这个问题,但没有找到任何关于包含的列对索引交集的影响的信息。
包含的列不会阻止将索引用于任何目的。
查询优化器将选择对正在编译的查询最有效的最佳索引(或可能是表扫描)。保持索引尽可能小,同时仍然提供所需的功能。根据联机丛书, INCLUDEd 列不会影响查询优化器严格根据大小选择索引,但是,如果任何给定索引具有查询所需的所有列(作为键列或包含列),则该索引将获得优先权。
由于查询优化器是一个相当不透明的野兽,您很可能需要测试建议的索引以查看它是否被使用,以及对 INSERT、UPDATE 和 DELETE 产生的影响。