在数据库(以 SQL Server 等关系型数据库为例)中,索引扫描(Index Scan)和索引查找(Index Seek)是执行计划里两种常见的索引访问方式,核心区别在于是否利用索引的有序性和定位能力来快速定位数据。
含义:
按照索引的存储顺序,从头到尾(或按范围)逐行读取索引页,相当于“全索引遍历”。
特点:
示例:
SELECT * FROM User WHERE YEAR(CreateTime) = 2023;
(YEAR() 导致索引失效 → 索引扫描)
代价:
I/O 和 CPU 消耗较高,数据量大时性能差。
含义:
利用索引的 B+Tree 结构,从根节点快速定位到目标数据页,只读取所需行。
特点:
=、>、<、BETWEEN)示例:
SELECT * FROM User WHERE UserId = 1001;
(UserId 是聚集索引 → 索引查找)
代价:
通常很低,是理想的数据访问方式。
| 对比项 | 索引扫描 | 索引查找 |
|---|---|---|
| 是否利用索引定位 | ❌ 否 | ✅ 是 |
| 读取范围 | 大量 / 全部 | 少量 / 精确 |
| 性能 | 较慢 | 较快 |
| 常见原因 | 条件无法用索引 | 条件命中索引 |
| 执行计划关键字 | Index Scan | Index Seek |
如果你说的是 特定数据库(MySQL / Oracle / PostgreSQL) 或 执行计划优化场景,我可以进一步细化。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。