MySQL 8.0 不可见索引使用

梦莱10个月前技术文章251

一、具体信息

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,隐藏索引仍然不可见,但是优化器在构建执行计划时将会考虑这些索引

相关文章

mcasttest-tool组播检测工具

mcasttest-tool组播检测工具

检测组播mcasttest-tool是oracle组播检测工具,组播是oracle 11.2.0.2开始的新功能1、上传mcasttest工具解压并授权[root@rac1 soft]# cd /u0...

网络策略NetworkPolicy

网络策略NetworkPolicy

目的:为了实现细粒度的容器间网络访问隔离策略。引用:1.3版本NetworkPolicy机制 -> 1.8版本networking.k8s.io/v1稳定版本功能:对pod、ns之间网络通信限制...

PG的统计信息(三)

1.3 数据分布类统计信息1.3.1 pg_stats通过对pg_stats的查询,可以查看每个字段的数据分析统计信息,类似SQL Server的直方图,为优化器选择最佳执行计划提供依据,pg_sta...

Storage Classes之nfs provisioner

Storage Classes之nfs provisioner

每个 StorageClass 都有一个制备器(Provisioner),用来决定使用哪个卷插件制备 PV。 该字段必须指定。这里我们使用nfs作为StorageClass的制备器,官方并未对nfs进...

HDFS Fsimage分析磁盘目录(文件级别)

HDFS Fsimage分析磁盘目录(文件级别)

首先获取fsimage信息hdfs dfsadmin -fetchImage  /opt/fsimage格式化fsimage 转换为可读文本hdfs oiv -i /opt/fsimage/fsima...

em升级&添加节点实践

em升级&添加节点实践

一、扩容前准备 1.格式化磁盘分区并挂载(1)设置gpt分区表          &nbs...

发表评论    

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