我正在寻找对我对数据库中复合索引的理解的确认 - 特别是与 SQL Server 2008 R2 相关的内容,如果这有所不同的话。
我想我明白索引列的顺序是至关重要的,因为如果我有一个 { [Name], [Date] }
的索引,那么一个基于 WHERE 的 SELECT基于 [Date] 的子句将无法使用索引,但 { [Date], [Name] }
的索引可以。如果 SELECT 基于两列,则任一索引都可用。
是吗?使用这样的复合索引有什么好处,每列有两个索引(即 { [Date] }
和 { [Name] }
)。
谢谢!
最佳答案
不完全是,日期上的选择仍然可以使用索引,但不如包含名称作为名称的查询那样有效,这会限制必须搜索多少索引。
如果您经常查询姓名 + 日期以及日期和姓名分开的查询,请使用 3 个索引,每个索引一个。
此外,在索引中将变化最大的字段放在首位也会更快地限制索引搜索范围,从而使其更快。
您还可以包含列、未编入索引但通常根据索引获取的数据。
关于sql - 复合数据库索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668690/