温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

索引扫描支持联合索引吗

发布时间:2026-09-09 08:50:30 来源:亿速云 阅读:93 作者:小樊 栏目:数据库

支持。索引扫描(Index Scan)是支持联合索引(复合索引 / Composite Index)的。

下面分几点说明:


1. 什么是联合索引

联合索引是在多个列上建立的索引,例如:

CREATE INDEX idx_user ON user (age, name, city);

这是一个在 (age, name, city) 三列上的联合索引。


2. 索引扫描如何使用联合索引

在执行查询时,如果 WHERE 条件、ORDER BY、JOIN 条件等能用上联合索引的前缀列,数据库就可以使用索引扫描,例如:

✅ 能使用索引扫描:

WHERE age = 20
WHERE age = 20 AND name = 'Tom'
WHERE age = 20 AND name = 'Tom' AND city = 'Beijing'

❌ 无法使用(或只能部分使用)索引:

WHERE name = 'Tom'        -- 未使用最左前缀
WHERE city = 'Beijing'

3. 联合索引的“最左前缀原则”

数据库通常使用**最左匹配(Leftmost Prefix)**规则:

  • 必须从联合索引的第一列开始连续使用
  • 中间断列,则后续列无法利用索引

示例:

(age, name, city)

可用:

  • age
  • age + name
  • age + name + city

不可用:

  • name
  • city
  • name + city

4. 索引扫描的类型(与联合索引无关但相关)

  • Index Scan(索引扫描)
  • Index Only Scan(索引覆盖扫描):查询字段都在索引中,无需回表
  • Index Range Scan:范围查询(如 age > 20

联合索引更容易实现 Index Only Scan


5. 总结

✅ 索引扫描完全支持联合索引
✅ 是否使用取决于最左前缀匹配
✅ 合理设计联合索引可显著提升性能

如果你有具体数据库(MySQL / PostgreSQL / Oracle)或具体 SQL,我可以帮你分析是否走了联合索引。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI