我有一个与 DB 理论有关的问题:
假设我们有 3 列的表:[PersonID], [PersonName], [PersonAge]
.
我们知道,当我们有一个按一列的非聚集索引时,SQL Server 会按照指定的列对表数据进行排序,并从中构建 B+ 树。当我们需要使用这样的索引来查找行时,SQL Server 通过比较一个原子数据对象(int
或string
,例如)来扫描 B++ 树。很清楚,当我们按一列构建非聚集索引时(假设[PersonName]
),非聚集索引是如何工作和查找数据的,但是如果我们按两列创建非聚集索引呢:[PersonName]
和[PersonAge]
?
我知道,在排序过程中,最重要的标准将是[PersonName]
,如果有几条记录相同,那么它们将按[PersonAge]
. 但是,SQL Server 将如何根据该索引物理处理 B++ 树?
当它应该执行查询时它将如何使用这样的树
SELECT *
FROM dbo.Person
WHERE [PersonName] = 'Bob' AND [PersonAge] = 45
谢谢你的解释。