三. 删除索引
与 创建索引的后两种方式对应,删除索引,也有相对应的方式 .
三.一 alter table 表名 drop index 索引名
注意,这个 index 是单独的index, 表示索引的意思。
只根据 索引名称进行删除。 这也是创建索引时,建议自定义索引名的原因。
操作1: 删除 noIndex 表的 唯一索引 索引名为 noIndex_name
alter table noIndex drop index noIndex_name;
三.二 drop index 索引名 on 表名
操作1: 删除 noIndex 表的普通索引,索引名为 noIndex_age
drop index noIndex_age on noIndex;
四. 索引的补充
不常用,仅作为一个补充。
四.一 创建 单列索引
创建 index3 表,name 为单列索引
// 创建表 create table index3( id int(11) primary key, name varchar(20), age int(3), index index3_name(name(20)) ); // 展示表信息 show create table index3 \G
四.二 创建组合索引
创建 index4 表,name ,age 为组合索引
// 创建表 create table index4( id int(11) primary key, name varchar(20), age int(3), index index4_name(name(20),age) ); // 展示表信息 show create table index4 \G
- 要注意,需要遵循 最左前缀原则。
如 单独查询 age 是不能触发索引的
- possible_keys 是 null
- 查询 name 和 age 是可以触发的
- 单独查询 name 也是可以触发的。
四.三 创建 全文索引
创建表 index5, name 为全文索引
// 创建表 create table index5( id int(11) primary key, name varchar(20), age int(3), fulltext index index5_name(name(20)) ); // 展示表信息 show create table index5 \G
发现,引擎为 InnoDB ,也没有报错。
如果版本低,不支持,那么创建时,可以在创建表时,指定引擎
// 创建表 create table index7( id int(11) primary key, name varchar(20), age int(3), fulltext index index7_name(name(20)) ) engine=MyISAM; // 展示表信息 show create table index7 \G
四.四 创建 空间索引
创建表为 index6, 数据类型必须为那四种的一种
create table index6( id int(11) primary key, name geometry not null, age int(3), spatial index index6_name(name) ); show create table index6 \G
如果版本低,不支持,那么创建时,可以在创建表时,指定引擎
create table index8( id int(11) primary key, name geometry not null, age int(3), spatial index index8_name(name) ) engine=MyISAM; show create table index8 \G
索引非常重要,需要掌握。