mysql --索引

优点:

(1)通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性

(2)大大提高了检索数据的效率,减少表的检索行数

缺点:

(1)在创建索引和维护索引的时候会耗费时间,随着数据量的增加时间复杂度增加

(2)索引文件会占用物理内存

(3)当对表的数据进行增删改的时候,所以也要动态的维护,这样就会降低数据的而维护速度

分类:单列索引,组合索引

单列索引

(1)一个索引只包含一个列

(2)可以存在多个单列索引

(3)单列索引分为:主键索引,唯一索引,普通索引

组合索引

一个组合可以包含两个或者两个以上的列

创建一个普通索引

方式一
create index 索引名 on 表名(字段名)
方式二
alter table 表名 add index 索引名 【using {btree|hash}】(字段名)
 

 例如:在学生表stu的学号列上的前5个字符建立一个而肾虚索引stu_id

方式一
create index stu_id  on stu(学号(5),asc);
方式二
alter table stu add index stu_id 【using {btree|hash}】(学号(5),asc);

  

创建唯一索引,与普通索引类似,必须唯一,可以存在空值

方式一
create unique index 索引名 on 表名(字段名)
方式二
alter table 表名 add  unique 【using {btree|hash}】(字段名)

  

创建主键索引,必须唯一,不可以存在空值 

方式一
创建表的时候添加
方式二
alter table 表名 add  primary key 【using {btree|hash}】(字段名)

组合索引

以上的语句中,字段定义多个,用,分割,只有一个索引名称

方式一
create  index 索引名 on 表名(字段名,字段名)
方式二
alter table 表名 add  index 【using {btree|hash}】(字段名,字段名)

  例如

方式一
create  index fuhe_id on stu(学号,课程号)
方式二
alter table stu add  index 【using {btree|hash}】(学号,课程号)

  

查看表中索引情况

show index from 表名;

创建表的过程创建索引:

#正常创建表
create table 【if not exists】表名(
       列名 数据类型,
       列名  数据类型,
       列名 数据类型,
       primary key 【using{hash|btree} 】(列名,列名),
       index 【key】【using{hash|btree} 】(列名,列名),
       unique 【key】【using{hash|btree} 】(列名,列名),)      ;          

  

删除索引

方式一
drop index 索引名称 on 表名;
方式二
alter table 表名 drop primary key| drop index key 索引名 foreign key 外键名;

  

猜你喜欢

转载自www.cnblogs.com/ivyharding/p/11564769.html