SQL Server中的索引查找与索引扫描

Ram*_*Ram 34 sql sql-server sql-server-2008

请通过示例说明MS SQL服务器中的索引扫描和索引查找之间的区别,因为了解它的实际用途会有所帮助.提前致谢.

bac*_*ack 44

以下是使用扫描的此查询的文本showplan(为了简洁而略微编辑):

|–Table Scan(OBJECT:([ORDERS]), WHERE:([ORDERKEY]=(2)))
Run Code Online (Sandbox Code Playgroud)

下图说明了扫描:

在此输入图像描述

以下是使用搜索的同一查询的文本showplan:

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

在此输入图像描述

看看这个SQL Server计划:Index Scan/Index Seek之间的区别

  • 查找是对索引执行的操作,索引用于存储内容。这有点像在书中寻找有关“狗”的信息。您可以从第一页开始阅读,然后继续阅读,直到找到“狗”这个词。或者,您可以在索引中查找,找到“狗”并获取包含有关狗的信息的页码。数据库索引大致就是这样工作的:它们是单独维护的、有序的记录除了数据库索引不仅仅使用简单的字母顺序之外,它们还有更聪明的结构,例如 B 树:https://en.wikipedia.org/wiki/B-tree (2认同)

小智 6

简单来说,索引扫描或表扫描是指SQL Server必须扫描数据或索引页以查找相应的记录.扫描与搜索相反,其中搜索使用索引来精确定位满足查询所需的记录.

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

#Index scan vs Index seek

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

#Index scan vs Index寻求简要