索引

索引有两个主要功能:约束,加速查找

索引为什么可以加速查找? B-tree

搜索数据库给创建索引的列创建一个文件 ,将该列中的数据标定一个唯一的数字,然后在文件中将数据按照二叉树的形式排列,再查询时,直接在二叉树中搜索数字,简化搜索的次数,通过该数字可以直接在数据库中查找到查询的数据

索引的种类

索引分为:

普通索引

唯一索引

主键索引

联合索引

普通索引:

只有加速查找的功能

1,在创建表时创建索引

create table 表名(
列名 varchar(12) not null;
index 索引名(列名);
)

2,创建空表后添加索引

create index 索引名 on 表名(列名);

3,删除索引

drop index 索引名 on 表名

4,查看索引

show index from 表名;

唯一索引:

唯一索引是普通索引的特殊形式

能够加速查找,同时也能约束添加索引的列数据不能重复,数据可以为Null

1,在创建表时创建唯一索引

create table 表名(
列名 varchar(12) not null;
unique 索引名(列名);
)

2,创建空表后添加唯一索引

create unique index 索引名 on 表名(列名);

主键索引:

主键(primary key),在创建后就被当作是一个索引文件

加速查找,同时也能约束添加索引的列数据不能重复,但是数据不能为Null

 创建方式就是创建一个主键

组合索引:

联合唯一:加速查找,同时也能约束添加索引的列数据不能重复

 组合索引中查找数据时,按照最左索引,定义时最左边的列可以直接使用索引查找,非最左边的数据库查找

在创建普通索引和唯一索引时,在表名()的括号中多写几个列名,就能将这些列名创建组合索引

如:

普通组合索引index 索引名(列名,列名,列名。。。); 这些组合索引的值可以重复
组合唯一索引 unique 索引名(列名,列名,列名。。。)   这些索引的值不能重复,因此又被称为联合唯一

创建索引后,数据的查询分为两步
1,先去索引表中查找字符代表的数字
2,区数据表中查找数字

组合索引查找数据按照最左索引,小技巧还可以用来在用户登录时,系统不会涉及查找用户名,就可以在用户表中将name写在psd前,然后将两列创建一个组合索引即可,不需要创建两个单独的索引浪费内存

利用索引查询数据:

覆盖索引:

只需要在索引表中就能获取的数据(应用索引,不用去数据表中获取数据,想要获取的数据在已经建立的索引列里

 如对表teacher 的tname建立索引索引,获取时也只获取tname列的数据,条件也是tname索引

select tname from teacher where tname>100

合并索引

两个以上的索引合并起来作为条件搜索数据

如 student表中有 sid name age num  这几个列,对列name和num建立单独索引
查询时的条件就是这两个已经建立索引的列

select *  from student where name='dd' and num='23';

 

posted @ 2020-11-12 20:50  maday  阅读(115)  评论(0)    收藏  举报