您能否解释Microsoft SQL Server中Covering Index和Covered Queries的概念及其之间的关系?
3 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
如果查询列表中请求的所有列select
都在index中可用,则查询引擎不必再次查找表,这可以显着提高查询的性能。由于所有请求的列在索引中都可用,因此索引涵盖了查询。因此,该查询称为覆盖查询,而索引是覆盖索引。
如果选择列表中的列来自同一表,则聚集索引始终可以覆盖查询。
长风秋雁
TA贡献1757条经验 获得超7个赞
覆盖指数是一个Non-Clustered
指数。聚簇索引和非聚簇索引都使用B树数据结构来改进数据搜索,不同之处在于,在聚簇索引的叶子中,整个记录(即行)实际上都存储在此处!非聚集索引的大小写。以下示例对此进行了说明:
示例:我有一个包含三列的表:ID,Fname和Lname。
但是,对于非聚集索引,有两种可能性:表已经具有聚集索引,或者没有:
正如两个图所示,这样的非聚集索引不能提供良好的性能,因为它们无法仅从B树中找到喜欢的值(即Lname)。相反,他们必须执行额外的“查找”步骤(查找“密钥”或“ RID”)以查找Lname的值。并且,这是覆盖索引进入屏幕的地方。在这里,ID上的非聚集索引覆盖了B树的叶子中紧挨着它的Lname的值,并且不再需要任何类型的查找。
- 3 回答
- 0 关注
- 877 浏览
添加回答
举报
0/150
提交
取消