sql-server - 主键(ID)上的索引扫描
问题描述
询问
SELECT MAX(ID) FROM Product
https://www.brentozar.com/pastetheplan/?id=Skv5OqZBU
即使查询基于主键(ID),为什么优化器使用索引扫描?
解决方案
如果您阅读计划的“索引扫描”节点内的详细信息,您会发现它只期望返回 1 行。从末尾开始扫描 1 行实际上比索引查找具有更好的性能。
MSSQL 索引的物理结构是 B+ 树。通过索引查找,这意味着您从树部分开始在 O(log N) 中定位项目。通过索引扫描,这意味着您从数据部分开始定位项目。这次你读了一个,所以它是 O(1)。
因此,您的查询实际上现在执行得非常快。
推荐阅读
- java - 根据其字符内容将字符串转换为新字符串
- jestjs - 有没有办法在测试执行期间获取 jest 收集的覆盖率信息?
- flutter - Flutter GetX RxList 分配问题
- firebird - 选择多行输出并增加列名 FB2.5
- continuous-integration - Gitlab - 始终为每个阶段运行构建
- swift - SwiftLint 函数定义后的强制空行
- notifications - Ride sahring Rider App如何调用Driver app
- java - Selenium:ElementNotInteractableException:尝试访问自动完成文本框时元素不可交互
- microsoft-graph-api - Microsoft Graph Api - 根据组成员身份筛选用户
- elasticsearch - ElasticSearch如何管理ngram查询中的分数结果?