【MySQL】十四,MySQL 8.0的隐藏索引

server/2024/12/27 11:47:03/

在MySQL 8.0之前的版本中,索引只能直接删除。如果删除后发现引起了系统故障,又必须进行创建。当表的数据量比较大的时候,这样做的代价就会非常高。

在MySQL 8.0中,提供了隐藏索引。如果想删除某个索引,那么在实际删除之前,可以将其设置为隐藏,此时查询优化器就不会再使用此索引。确认对系统不会产生影响后,再实际删除。

演示

  • 创建表时创建隐藏索引
CREATE TABLE `ts2` (`id` int not NULL,`name` int DEFAULT NULL,primary key(id),KEY `idx_name` (`name`) invisible
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  • 切换成非隐藏
ALTER TABLE ts2 ALTER INDEX idx_name VISIBLE;
  • 再次切换成隐藏
ALTER TABLE ts2 ALTER INDEX idx_name invisible;
  • 在已经存在的表上,创建新索引
CREATE TABLE `ts3` (`id` int not NULL,`name` int DEFAULT NULL,primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

在MySQL 8.0中创建新索引时,默认就是可见的

create index idx_name on ts3(name);

在MySQL 8.0中创建新索引时,默认就是可见的,也可以显示指定索引隐藏

create index idx_name_2 on ts3(name) invisible;

使隐藏索引对查询优化器可见

select @@optimizer_switch;

use_invisible_indexes=off说明隐藏索引默认对查询优化器不可见
设置为on可以让隐藏索引对查询优化器可见

set session optimizer_switch="use_invisible_indexes=on";

http://www.ppmy.cn/server/153606.html

相关文章

上海AI中心记录

先谈谈做了什么项目,用了什么技术,有什么亮点和困难,采用什么方案解决的。 1、js事件循环 调用栈(Call Stack): JavaScript 是单线程的,所有的代码执行都是在调用栈中进行的。当函数被调用时&a…

SpringBoot的MVC接口增加签名

一、确定签名策略 HMAC(Hash-based Message Authentication Code):使用对称密钥。RSA:使用非对称密钥对(公钥/私钥)。OAuth:用于第三方授权和签名。 二、创建签名工具类 1、HMAC 签名工具类 …

Lambda、Stream流、线程(池)、IO

文章目录 LambdaStream流线程(池)IO Lambda 使用前提 必须存在一个接口接口中有且只有一个抽象方法 格式 : ( 形式参数 ) -> { 代码块 } 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空…

React Hooks

React Hooks React Hooks 是 React 16.8 版本中引入的一种新功能,它允许在不编写类的情况下使用状态和生命周期等特性。 在 Hooks 出现之前,React 里的函数式组件也被称为无状态组件。 函数组件和类组件的区别? 类组件必须要注意this指向…

08. 基于docker-compose部署LNMP架构

目录 前言 1、docker 1.1 任务要求 1.2 关闭防火墙 1.3 安装docker 1.4 配置镜像加速下载 2、Nginx 2.1 建立工作目录并进行相关操作 2.2 准备 nginx.conf 配置文件 3、Mysql 3.1 建立工作目录并进行相关操作 3.2 编写 my.cnf 配置文件 4、PHP 4.1 建立工作目录并…

使用Python实现量子计算应用:走进量子世界的大门

量子计算作为一种全新的计算范式,正在逐步改变我们的计算方式。与经典计算机依赖比特(bits)进行信息处理不同,量子计算机使用量子比特(qubits)进行计算,这使得量子计算在处理某些复杂问题上具有…

批量识别工作表中二维码信息-Excel易用宝

今天一大早,我们老板心急火燎的找到我,说是这个表格中的商品编码都不见了,问我能不能通过商品二维码还原商品编码,做好了中午给我加个鸡腿。 哎呀,这活不简单啊,我勉为其难的说,我先试试吧。 等…

docker oracle一些报错处理--失败记录

个人学习记录 1. 修改实例服务名称 [oracle3fe959481973 ~]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 14 15:37:02 2024Copyright (c) 1982, 2009, Oracle. All rights reserved.SQL> connect /as sysdba; Connected. #查看当前服务名称 SQL&…