mysql8 索引

  • 创建索引
  • 创建主键索引
  • 创建唯一键索引
  • 创建普通索引
  • 创建全文索引
  • 删除索引
  • 索引创建原则


创建索引

创建主键索引

create table [表名](列1 数据类型1, 列2 数据类型2, ...); 
alter table [表名] add prinmary key(列名); 创建后再添加主键索引

create table [表名](列1 数据类型1 primary key, 列2 数据类型2, ...); 在创建表的时候,直接在字段后指定primary key

create table [表名](列1 数据类型1, 列2 数据类型2, ..., primary key(列名)); 在创建表的最后,指定某列或某几列为主键索引
主键索引的特点:
	一个表中,最多有一个主键索引,也可以使用复合主键
	主键索引的效率高(主键不可重复)
	创建主键索引的列,他的值不能为null,且不能重复
	主键索引的列基本上是int

创建唯一键索引

create table [表名](列1 数据类型1 primary key, 列2 数据类型2 unique, ...); 在创建表时,在某列后面直接指定unique唯一属性

create table [表名](列1 数据类型1 primary key, 列2 数据类型2, ..., unique(列名)); 在创建表的最后,指定某列或某几列为唯一键索引

create table [表名](列1 数据类型1 primary key, 列2 数据类型2, ...);
alter table [表名] add unique(列名); 创建表之后再增加唯一键索引
唯一键索引的特点:
	一个表中,可以有多个唯一索引
	查询效率高
	如果在某一列建立唯一索引,必须保证这列不能有重复数据
	如果一个唯一键索引指定not null,等价于主键索引

创建普通索引

create table [表名](列1 数据类型1, 列2 数据类型2, ..., index(列名)); 在表的定义最后,指定某列为索引

create table [表名](列1 数据类型1, 列2 数据类型2, ...);
alter table [表名] add index(列名); 创建完表后指定某列为普通索引

create table [表名](列1 数据类型1, 列2 数据类型2, ...);
create index [索引名] on [表名](列名); 创建一个自定索引名的索引
普通索引的特点:
	一个表中可以与多个普通索引,普通索引在实际开发中用的比较多
	如果某列需要创建索引,但是该列有重复值,那么就应该使用普通索引

创建全文索引

当对文章字段或有大量文字的字段进行检索时,会使用到全文索引,要求表的存储引擎必须是MyISAM,
并且默认的全文索引仅支持英文,不支持中文,如果对中文进行全文检索可以使用coreseek

删除索引

删除主键索引
alter table [表名] drop primary key;

删除其他索引
alter table 表名 drop index 索引名;

drop index 索引名 on 表名;

索引创建原则

比较频繁作为查询条件的字段应该创建索引
唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
更新非常频繁的字段不适合作创建索引