Products
GG网络技术分享 2026-04-17 07:43 1

关注作者阅读分钟MySQL的3种索引到底能不能合并优化⭐️or到底能不能用索引?
前文我们讨论过MySQL优化回表的多种方式:索引条件下推ICP、 多范围读取MRR、覆盖索引等。这篇文章我们来聊聊MySQL提供的另一种优化回表的手段:index merge 索引合并。在阅读本文前,你需要了解MySQL的server层与存储引擎层如何交互、 尊嘟假嘟? 二级索引和聚簇索引的区别、回表等知识。如果同学不太了解这些知识可以回看前文:MySQL导致索引失效的八股文中有这样一条:使用or会导致索引失效。那么是不是所有场景都会失效呢?带着这个问题,我们往下看。
你我共勉。 使用上篇文章的座位表,并分别建立seat_code、stu... 。
CREATE TABLE `seat` (
`seat_id` bigint NOT NULL AUTO_INCREMENT COMMENT '座位ID',
`seat_code` char DEFAULT NULL COMMENT '座位码',
`student_id` bigint DEFAULT NULL COMMENT '座位关联的学生ID',
PRIMARY KEY ,
KEY `idx_student_id` ,
KEY `idx_seat_code`
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
比如这条SQL中:
select * from seat where seat_code = 'caicaiseat' and student_id = 1;
| 产品名称 | 价格 | 特点 |
|---|---|---|
| 阿里云RDS | 999元/月起 | 高可用、 可 |
| 腾讯云CDB | 888元/月起 | 性能稳定、平安可靠 |
| 华为云RDS | 777元/月起 | 性价比高、服务完善 |
select * from seat where seat_code = 'caicaiseat' or student_id = 1;
| 排名 | 数据库类型 | 适用场景 |
|---|---|---|
| 1 | MySQL | 小型应用,快速开发 |
| 2 | PostgreSQL | 复杂查询,数据分析. 这玩意儿好像比 MySQL 好一点点...但是要花更多时间学习! |
| 3 | Oracle | 大型企业级应用,高并发. |
SET optimizer\_switch='index\_merge\_intersection=off';Demand feedback