mysql 索引合并_mysql8 参考手册--索引合并优化

本文介绍了MySQL的索引合并优化,包括合并的原理、适用场景及不同算法,如索引合并交集、联合和排序联合。通过示例查询解释了何时使用哪种算法,并提到了索引合并的限制和系统变量(optimizer_switch)对它的影响。
摘要由CSDN通过智能技术生成

该指数合并与多址接入方式检索行 range扫描并合并他们的结果为一体。此访问方法仅合并来自单个表的索引扫描,而不合并多个表的扫描。合并可以产生其基础扫描的并集,相交或相交。

可能使用索引合并的示例查询:

SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20;

SELECT * FROM tbl_name

WHERE (key1 = 10 OR key2 = 20) AND non_key = 30;

SELECT * FROM t1, t2

WHERE (t1.key1 IN (1,2) OR t1.key2 LIKE 'value%')

AND t2.key1 = t1.some_col;

SELECT * FROM t1, t2

WHERE t1.key1 = 1

AND (t2.key1 = t1.some_col OR t2.key2 = t1.some_col2);注意

索引合并优化算法具有以下已知限制:

如果您的查询包含WHERE 带有深度AND/ OR 嵌套的复杂子句, 而MySQL没有选择最佳计划,请尝试使用以下身份转换来分发术语:

(x AND y) OR z => (x OR z) AND (y OR z)

(x OR y) AND z => (x AND z) OR (y AND z)

索引合并不适用于全文索引。

在EXPLAIN输出中,索引合并方法出现 index_merge在 type列中。在这种情况下,该 key列包含使用的索引列表,并key_len包含这些索引的最长键部分的列表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值