MySQL 8.x中新增了三种索引方式:隐藏索引、降序索引 及 函数索引。
1. 隐藏索引
隐藏索引又叫不可见索引,主要应用于索引的 软删除 和 灰度发布。
在之前MySQL的版本中,只能通过显式的方式删除索引,如果删除后发现索引删错了,又只能通过创建索引的方式将删除的索引添加回来,如果数据库中的数据量非常大,或者表比较大,这种操作的成本非常高。在MySQL 8.0中,只需要将这个索引先设置为隐藏索引,使查询优化器不再使用这个索引,但是,此时这个索引还是需要MySQL后台进行维护,当确认将这个索引设置为隐藏索引系统不会受到影响时,再将索引彻底删除。这就是索引软删除功能。
灰度发布,就是说创建索引时,首先将索引设置为隐藏索引,通过修改查询优化器的开关,使隐藏索引对查询优化器可见,通过explain对索引进行测试,确认这个索引有效,某些查询可以使用到这个索引,就可以将其设置为可见索引,完成灰度发布的效果。
创建隐藏索引具体代码如下(只需要在创建索引的后面加上invisible即可):
create index 索引名称 on 表名称('索引字段名') invisible;
此时创建的索引就是隐藏索引,我们可以查看当前表中索引列表:
show index from 表名称 \G;
\G:是格式化的意思
显示的索引中有一个Visible属性,YES表示这个索引可见ÿ