隐藏索引
MySQL8开始支持隐藏索引。隐藏索引提供了更人性化的数据库操作。
隐藏索引,顾名思义,让索引暂时不可见,不会被优化器使用。默认情况下索引时可见的。隐藏索引可以用来测试索引的性能。验证索引的必要性时不需要删除索引,可以先将索引隐藏,如果优化器性能无影响就可以真正的删除索引。
语法如下:
ALTER TABLE tablename alter index index_name INVISIBLE; #隐藏索引
ALTER TABLE tablename alter index index_name VISIBLE; #取消隐藏
代码示例:
mysql> create table class(id int,name varchar(64),index id_index(id)); #创建一个表同时创建普通索引
mysql> show create table class; #查看表的定义
mysql> alter table class alter index id_index INVISIBLE; #隐藏索引
mysql> show create table class; #查看表的定义上面的做对比
mysql> alter table class alter index id_index VISIBLE; #取消隐藏
mysql> show create table class; #查看表的定义
首先创建一个有普通索引的表,然后再隐藏索引,可以通过查看表的定义明显的看出来。
之后再取消隐藏,可以明显的看出来变化。
删除索引
所谓删除索引,就是删除表中已经创建的索引。之所以要删除索引,是因为这些索引会降低表的更新速度,影响数据库的性能
在MySQL中删除索引通过SQL语句DROP INDEX来实现,其语法形式如下:
DROP INDEX indexname ON tablename;
修改索引:先删除,后增加
代码示例:
mysql> drop index id_index on class; #删除class表中命名为id_index的索引
mysql> show create table class; #查看表的定义
上一个表中有索引的,通过drop index语句删除后再查看表的定义可明显的看到没有索引了就删除了。