MySQL 8.0 不可见索引使用

梦莱2年前技术文章586

一、具体信息

1、在提供 SQL 优化意见的时候包括了两个冗余索引的内容,具体内容如下:

查看慢 SQL 的时候发现 database 库 table 表中存在冗余索引,具体冗余索引情况如下:
KEY `key1` (`is_main`,`x`,`xx`,`xxx`),
KEY `key2` (`is_main`),
is_main 列 索引存在一定冗余。

database1 库 table1 表中存在冗余索引,具体冗余索引情况如下:
UNIQUE KEY `uk_key` (`account_sid`),
KEY `key1` (`account_sid`,`xx`)
uk_account_sid 列已具有唯一性,所以目前 KEY `key1` 为重复索引。

2、客户方反馈上一次优化sql时,把table1表的key1索引删除,导致 SQL 报错

3、反馈如下:

对于报错来说:报错原因可以了解到是因为这边使用了 force index,而这个索引被删掉了,导致的报错。

二、补充

该实例是mysql 8.0 的,可以先通过索引不可见(mysql 8.0 的新特性),测试一段时间,对业务没有影响后,再进行索引的删除。如果有影响,可以立刻恢复至可见即可。

use_invisible_indexes 参数:系统变量 optimizer_switch 的 use_invisible_indexes 值控制了优化器构建执行计划时是否使用隐藏索引。如果设置为 off (默认值),优化器将会忽略隐藏索引(与引入该属性之前的行为相同)。如果设置为 on,隐藏索引仍然不可见,但是优化器在构建执行计划时将会考虑这些索引

相关文章

PG体系结构(二)

PG体系结构(二)

二、逻辑架构graph TD     A[database] -->B(schema)     B -->C[表]     B -->D[视图]     B -->E[...

DG概念与机制

1. 相关概念1.1 什么是DG  DG全称Data Guard,官方给出的定义是“Oracle Data Guard ensures high availability, data protecti...

Flink 状态管理

Flink 状态管理

一、  Flink 中的状态1、由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态 2、可以认为状态就是一个本地变量,可以被任务的业务逻辑访问 3、Flink 会进行状态管理,包括状...

通过Nodeport方式暴露集群

通过Nodeport方式暴露集群

一、原理图二、通过deployment部署双副本nginx,两个Pod[root@172-16-121-211 ~]# cat nginx-delpayment01.yml apiVersion: a...

CDH 5.16.2原地升级到CDP7.1.7

CDH 5.16.2原地升级到CDP7.1.7

1 升级Cloudera管理器1.1 升级Cloudera管理器准备1.1.1.1 关闭cloudera上托管的组件1.1.1.2 关闭Cloudera management service服务检查o...

如何分析IIS占用CPU资源问题?看看这篇文章吧

如何分析IIS占用CPU资源问题?看看这篇文章吧

ProcDump捕获dump文件1、下载官方下载地址为:https://learn.microsoft.com/en-us/sysinternals/downloads/procdump#introd...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。