相关疑难解决方法(0)

减少键查找

我正在使用 SQL 服务器,并且我一直在仔细研究关键查找的概念,

http://blog.sqlauthority.com/2009/10/07/sql-server-query-optimization-remove-bookmark-lookup-remove-rid-lookup-remove-key-lookup/

因此,如果您有一个键查找,您可以创建一个带有“包含”列的索引,以覆盖您在 select 语句中的非索引列。

例如,

SELECT ID, FirstName FROM OneIndex WHERE City = 'Las Vegas'
GO
Run Code Online (Sandbox Code Playgroud)

该索引将包括一个键查找,

CREATE NONCLUSTERED INDEX [IX_OneIndex_City] ON [dbo].[OneIndex]
(
[City] ASC
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

但是这个将删除密钥查找,

CREATE NONCLUSTERED INDEX [IX_OneIndex_Include] ON [dbo].[OneIndex]
(
City
) INCLUDE (FirstName,ID) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

我的意思是这对性能有多大影响?键查找的运算符成本为 0.295969 (99%),但这究竟意味着什么?

你怎么知道你在那里需要第二个索引,什么时候会变成你试图添加太多索引而不值得的情况?

在我看来,有些查询可以包括索引扫描、键查找,而且似乎仍然执行得非常快。

performance sql-server-2008 sql-server bookmark-lookup

6
推荐指数
2
解决办法
9746
查看次数