【问题标题】:Index Seek vs Index Scan in SQL Server [closed]SQL Server中的索引搜索与索引扫描[关闭]
【发布时间】:2016-11-08 12:06:15
【问题描述】:

请通过示例说明 MS SQL 服务器中的 Index Scan 和 Index Seek 之间的区别,因为这将有助于了解它的真正用途。提前致谢。

【问题讨论】:

标签: sql sql-server sql-server-2008


【解决方案1】:

以下是使用扫描的该查询的文本显示计划(为简洁起见稍作编辑):

|–Table Scan(OBJECT:([ORDERS]), WHERE:([ORDERKEY]=(2)))

下图说明了扫描:

以下是使用 seek 的同一查询的文本显示计划:

 |–Index Seek(OBJECT:([ORDERS].[OKEY_IDX]), SEEK:([ORDERKEY]=(2)) ORDERED FORWARD)

看看这个SQL Server Plans : difference between Index Scan / Index Seek

【讨论】:

  • 所以在我看来,搜索实际上是以某种顺序存储记录。 Hense 为什么它确切地知道这些值在表中的位置?他们是以这种方式物理存储还是有某种指向记录物理存储位置的指针?
  • 查找是对索引执行的操作,索引是存储内容的内容。这有点像在书中寻找有关“狗”的信息。您可以从第一页开始阅读并继续阅读,直到找到“狗”这个词。或者,您可以查看索引,找到“狗”并获取包含有关狗的信息的页码。数据库索引大致是这样工作的:它们是单独维护的、有序的记录 除了数据库索引不只是使用简单的字母顺序之外,它们还有更聪明的结构,比如 B-tree:en.wikipedia.org/wiki/B-tree
【解决方案2】:

简单来说, 索引扫描或表扫描是 SQL Server 必须扫描数据或索引页面以找到适当的记录。扫描与查找相反,查找使用索引来查明满足查询所需的记录。

您的问题类似于已在 stackoverflow 中发布的问题 从下面的链接获取它

#Index scan vs Index seek

您也可以从以下链接获取信息

#Index scan vs Index seek in brief

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多