哪个更好:书签/密钥查找或索引扫描

OMG*_*ies 45 sql t-sql sql-server optimization sql-server-2005

我知道索引搜索比索引扫描更好,但在SQL Server解释计划中更可取:索引搜索或密钥查找(SQL Server 2000中的书签)?

请告诉我他们没有再为SQL Server 2008更改名称...

gbn*_*gbn 48

索引寻求,每次.

查找很昂贵,所以这是覆盖索引,特别是添加了INCLUDE子句以使它们更好.

例如,如果您只期望一行,那么查找后的查找可能比尝试覆盖查询更好.在某些情况下,我们依靠这个来避免另一个指数.

编辑:简单的谈话文章:使用覆盖索引来提高查询性能

编辑,2012年8月

每行都会进行查找,这就是为什么它们会严重缩放的原因.最终,优化器将选择聚簇索引扫描而不是搜索+查找,因为它比许多查找更有效.

  • 覆盖索引的+1和Simple-Talk链接(优秀的东西) (2认同)

Rem*_*anu 9

键查找非常相似的一个聚集索引寻找(前2005 SP2被命名为"与查找寻求").我认为唯一的区别是Key Lookup可以指定一个额外的PRE-FETCH参数,指示执行引擎预取集群中的更多密钥(即,执行聚簇索引搜索,然后进行扫描).

看到一个关键的查找不应该吓到你.是嵌套循环中使用的常规运算符,嵌套循环是一般运算连接运算符.如果要改进计划,请尝试改进连接并查看它是否可以使用合并连接(即,连接的两端可以提供相同键顺序的行,最快的连接)或散列连接(足够QO考虑散列连接的内存,或者通过在连接之前而不是之后过滤行来减少基数.