小编Rah*_*van的帖子

where 子句中有和没有索引的两列 - 索引的工作原理

我正在 SQL Server 2008 上执行查询:

SELECT col1
FROM table1
WHERE col2=val2 AND col3=val3
Run Code Online (Sandbox Code Playgroud)

这里 col2 有一个非聚集索引, col1 是PRIMARY KEY,而 col3 没有任何索引。查询执行计划与此类似。 在此处输入图片说明

我想知道这里的查询执行是如何工作的。从执行计划中,我可以看到“col2”上的索引查找和“col3”上的键查找(并行显示)。

  • 它是否会获取与“col2=val2”条件匹配的所有行并检查其他条件?
  • 为什么这两个 -Index seek 和 Key-Lookup,在执行计划中是并行显示的?
  • 考虑到大型数据集并假设 'col2' 中的几乎所有条目都是唯一的,它是否总是使用 'col2' 上的可用索引?

index sql-server-2008 sql-server execution-plan

7
推荐指数
1
解决办法
2019
查看次数