网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

MySQL的3种索引到底能不能合并优化,有何妙招?

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


MySQL的3种索引合并优化⭐️or到底能不能用索引?

关注作者阅读分钟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;

排序并集

什么是有序并集?

排名数据库类型适用场景
1MySQL小型应用,快速开发
2PostgreSQL复杂查询,数据分析. 这玩意儿好像比 MySQL 好一点点...但是要花更多时间学习!
3 Oracle 大型企业级应用,高并发.

优化器根据各种可用选项的成本估计,在不同的索引合并算法和其他访问方法之间进行选择。.索引合并是mysql底层为我们提供的智能算法.到此这篇关于mysql 索引合并的使用的文章就介绍到这了,更多相关mysql 索引合并内容请搜索NICE源码以前的文章或继续浏览下面的相关文章希望大家以后多多支持NICE源码!.

为什么不建联合索引?

index merge 的前提

  • 主键有序
  • 避免随机IO

开启与关闭 Index Merge

  • SET optimizer\_switch='index\_merge\_intersection=off';

一些注意事项

  • 二级索引用来排序主键值
  • 不要再背八股文了!


提交需求或反馈

Demand feedback