SQL Server中的索引搜索与索引扫描[关闭]

Posted

技术标签:

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

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

【问题讨论】:

SQL Server Plans : difference between Index Scan / Index Seek的可能重复 【参考方案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 必须扫描数据或索引页面以找到适当的记录。扫描与查找相反,查找使用索引来查明满足查询所需的记录。

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

#Index scan vs Index seek

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

#Index scan vs Index seek in brief

【讨论】:

以上是关于SQL Server中的索引搜索与索引扫描[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 索引查找Index Seek 索引扫描 Index Scan与索引存储原理详解

SQL Server 索引最佳实践(SQL Server 2008)[关闭]

SQL Server中的全文搜索

译索引进阶:SQL SERVER中的索引碎片下篇

SQL Server查询优化与事务处理

SQL SERVER数据库维护与重建索引