WordPress登录页提示,百度地图关键词优化,企业网站内容运营方案策划,网站如何做支付接口索引覆盖
就是查询字段在索引的B树的叶子节点里
索引下推
innoDB会在存储层进行一些判断#xff0c;而不是发送回server层#xff0c;减少一些开销
MRR(Multi-Range Read)机制
回表不仅仅是磁盘io的问题#xff0c;更恐怖的事磁盘的随机io#xff01;想想这样一种情况…索引覆盖
就是查询字段在索引的B树的叶子节点里
索引下推
innoDB会在存储层进行一些判断而不是发送回server层减少一些开销
MRR(Multi-Range Read)机制
回表不仅仅是磁盘io的问题更恐怖的事磁盘的随机io想想这样一种情况 我通过索引找到了score在20-30范围内的学生找到后用id去聚簇索引找数据也就是回表。结果发现他们id范围是1-436-494-577-88在磁盘上不停在不同页之间切换这可咋整 MRR机制就是解决这个事情的。他会把score得到的id放到缓冲区的read_rnd_buffer得到所有id后排个序然后用排序了的id再去回表。
Index Skip Scan索引跳跃式扫描
这个是MySQL8之后才有的不过通常发挥不出来。 工作流程就是(ABC)索引后执行下面这种查询
SELECT * FROM tb_xx WHERE B xxx AND C xxx;乍一看没法用到索引但实际上会执行下面的查询把所有BC符合情况的可能的A都查出来然后union一句话概括
SELECT * FROM tb_xx WHERE B xxx AND C xxx AND A yyy
UNION
...
SELECT * FROM tb_xx WHERE B xxx AND C xxx AND A zzz;为啥通常发挥不出来呢 因为有巨多的限制多表联查时无法触发、SQL条件中有分组操作也无法触发、SQL中用了DISTINCT去重也无法触发…