sql-server - sql server执行计划-嵌套循环连接

标签 sql-server sql-execution-plan

我在 SQL Server 上有一个非常简单的选择:

select * from person
where first_name = 'John' and last_name = 'Smith'`

在执行计划中我有:

  • 非聚集索引查找 - NC_First_Last_pers
  • PK 上的 key 查找(集群)

这两个进入嵌套循环连接。

我的问题是:

为什么会有连接?我以为这仅用于连接不同的表,但我这里只有 1 个表。

谢谢!

最佳答案

在索引中,您拥有索引中包含的列的数据以及聚集键。您正在使用 * 查询表,这意味着您必须查找所有列值,并且这些值与聚集键存储在一起。

查询使用名称上的索引来查找所有匹配的行,然后使用聚集键来查找所需的数据。

关于sql-server - sql server执行计划-嵌套循环连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467825/

相关文章:

sql-server - 使用 SQL Azure 时间点还原进行还原的正确方法是什么?

Mysql列作为sql server中的vColumn语法

sql - 如何从约会集中返回所有空闲时间段

mysql - 为什么 MySQL 使用索引交集而不是组合索引?

c# - ORDER BY 给出错误的命令

sql - 计算两个日期之间事件的记录数

sql - 我如何知道查询中是否使用了任何索引 | PostgreSQL 11?

postgresql - postgres如何决定是使用index scan还是seq scan?

mysql 扫描行数差异

尽管 EXPLAIN 显示了良好的计划,但 MySQL 与连接的慢查询