SQL Server 上的索引查找

Jam*_*ami 3 index sql-server

对不起,如果这听起来很明显。但是索引查找总是在索引页而不是数据页上工作吗?如果是这样,我认为是这样,如果输出列表与索引 fields/covering 相同,则只能单独使用它。因此,如果输出需要非索引字段,它既不会被查询引擎完全使用,也不会与性能不佳的 Key/RId 查找一起使用。所以我可以得出结论,索引搜索只有在数据已经被索引覆盖的情况下才有用。那是对的吗?

Loz*_*ace 8

你的描述是正确的,但结论是不正确的。无论如何,使用索引可能仍然更快,即使它必须在其余部分转到表中。数据页包含的行比索引少得多,因此扫描时有很多额外的 I/O。通常,如果索引选择几行,即使它不太合适,它也会给您带来好处。

  • 它并不是真正臭名昭著,它只是引入了一些额外的 I/O。这是唯一的方法,除非您为您将要执行的每个查询构建一个完整的索引 + 覆盖列。您查看索引,然后转到数据页。这是典型的妥协。使用索引来完全回答您的查询实际上是不典型的。 (2认同)