Intersection合并
合并逻辑
SELECT * FROM test WHERE name = ‘a’ AND rmk = ‘b’;
- 从第一个索引中获取相关的记录
- 从第二个索引中获取相关的记录
- 筛选俩次结果ID相同的
- 回表查询
触发的必然条件(满足该条件可能触发,但是更大的可能性不触发)
- 等值匹配
- 主键列可以是范围匹配:可以用二级索引排序后,进行回表查询
Union合并
- 等值匹配
- 主键列可以是范围匹配
- 使用Intersection索引合并的搜索条件:合并后继续合并
Sort-Union合并
SELECT * FROM test WHERE name > ‘a’ AND rmk < ‘b’;
- 从第一个索引中获取相关的记录,ID排好序
- 从第二个索引中获取相关的记录,ID排好序
- 筛选俩次结果ID相同的
- 回表查询
联合索引替代Intersection索引合并
SELECT * FROM test WHERE name = ‘a’ AND rmk = ‘b’;
- 这个sql可以直接创建一个name,rmk的联合索引来优化!
结束语
- 获取更多有价值的文章,让我们一起成为架构师!
- 关注公众号,可以让你逐步对MySQL以及并发编程有更深入的理解!
- 这个公众号,无广告!!!每日更新!!!