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 表名;
索引创建原则
比较频繁作为查询条件的字段应该创建索引
唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
更新非常频繁的字段不适合作创建索引