Sql 复合数据库索引

Sql 复合数据库索引,sql,database,indexing,composite-key,Sql,Database,Indexing,Composite Key,我希望确认我对数据库中复合索引的理解——特别是对SQL Server 2008 R2的理解,如果这有什么不同的话 我想我知道索引列的顺序是至关重要的,因为如果我有一个{[Name],[Date]},那么基于[Date]的WHERE子句的SELECT将无法使用索引,而{[Date],[Name]}的索引将无法使用索引。如果SELECT基于这两个列,则两个索引都可用 是这样吗?使用这样的复合索引,在每列上使用两个索引(即{[Date]}和{[Name]})有什么好处 谢谢 没错 当复合柱的组合选择性

我希望确认我对数据库中复合索引的理解——特别是对SQL Server 2008 R2的理解,如果这有什么不同的话

我想我知道索引列的顺序是至关重要的,因为如果我有一个
{[Name],[Date]}
,那么基于[Date]的WHERE子句的SELECT将无法使用索引,而
{[Date],[Name]}
的索引将无法使用索引。如果SELECT基于这两个列,则两个索引都可用

是这样吗?使用这样的复合索引,在每列上使用两个索引(即
{[Date]}
{[Name]}
)有什么好处

谢谢

没错

当复合柱的组合选择性有效地修剪结果集时,复合指数是有用的

如果向索引(复合或非复合)中添加“包含”列,则可以创建“覆盖”索引来覆盖查询(或多个查询),这是可取的,因为它不需要执行第二次查找来获取这些列(从聚集索引)

选择两个单列索引还是组合列的复合索引取决于针对该表的总查询工作负载。

这是正确的

当复合柱的组合选择性有效地修剪结果集时,复合指数是有用的

如果向索引(复合或非复合)中添加“包含”列,则可以创建“覆盖”索引来覆盖查询(或多个查询),这是可取的,因为它不需要执行第二次查找来获取这些列(从聚集索引)


选择两个单列索引或组合列的复合索引取决于该表的总查询工作负载。

不完全是这样,日期选择仍然可以使用索引,但不如包含名称的查询有效,因为名称会限制搜索索引的数量

如果您经常对name+date和date以及name separate进行查询,请为每个组合使用3个索引

同时,索引中的第一个字段变化最大,也会使索引搜索速度更快


您还可以包含列、未编制索引但通常基于索引获取的数据。

不完全是这样,日期选择仍然可以使用索引,但不如包含名称的查询有效,因为名称会限制必须搜索多少索引

如果您经常对name+date和date以及name separate进行查询,请为每个组合使用3个索引

同时,索引中的第一个字段变化最大,也会使索引搜索速度更快


您还可以包含列,这些列是未编制索引但经常根据索引获取的数据。

很高兴知道!谢谢你的答复。很高兴知道!谢谢你的回复。