三种新的索引方式
1、隐藏索引
MySQL8.0 支持隐藏索引(invisible index),不可见索引
隐藏索引不会被优化器使用,但需要维护。
应用场景:软删除、灰度发布。
软删除:不确定当前索引是否需要删除的时候,软删除,不会彻底删除,可以恢复索引,不需要重新创建,但需要维护。
灰度发布:测试索引,对当前数据库不会参生太多影响,确认有效后,可以取消隐藏,改变为正常索引。
操作:
create table app_user (
pkid int,
age int
);
-- 正常索引
create index age_idx on app_user(age) ;
-- 隐藏索引 ,主键不可以设置尾隐藏索引
create index id_idx on app_user(pkid) invisible;
-- 有一个参数Visible为NO
show index from app_user;
-- 查询优化器对索引的使用情况
-- 会使用索引
explain select * from app_user where age=18;
-- 不会使用索引
explain select * from app_user where pkid=1;
-- 查询优化器的隐藏索引的开关
select @@optimizer_switch\G
-- 查询优化器使用隐藏索引,在当前会话中