什么是索引(保姆级)

目录

索引:

1、什么是索引?

2、索引是用来做什么的?

3、使用索引有什么好处

四、索引的分类:

1、普通索引

2、唯一索引

3、主键索引

4、全文索引

5、空间索引

六、索引的作用:

七、普通索引

1、普通索引的创建

2、以修改表的方式添加索引

3、查看表中所有索引

4、索引的删除:

八、联合索引

九、唯一索引

1、创建唯一索引的基本格式:

2、以修改的方式添加唯一索引

  #唯一索引的创建

十、主键/外键索引

1、创建主键/外键索引

2、以修改的方式添加主键约束

创建表时添加主键索引

以修改表结构的方式添加主键索引

十一、全文索引

1、创建全文索引的基本格式:

2、添加全文索引

十二、空间索引:

全文索引fulltext index

#全文索引的创建

#以修改表的方式添加全文索引

十三、索引的优缺点

十四、使用索引时的注意事项


索引:


1、什么是索引?


所谓索引,可以将其理解成为书的目录一样,相当于一个快捷查询。索引是以一种高效获取数据的存储结构来存储
数据,例如:hash、二叉搜索树、红黑树等。


2、索引是用来做什么的?


索引用于提高查询的效率,对需要频繁查询的某些字段建立索引,比普通字段的查询速度要快一些,除此之外索引并没有其他的用处


3、使用索引有什么好处


建立索引能提高查询效率

四、索引的分类:


1、普通索引


对普通的字段建立的索引,允许定义索引的字段重复和空值。


2、唯一索引


对唯一字段建立的索引,允许定义索引的字段空值,但不允许重复


3、主键索引


对主属性建立的索引,不允许定义索引的字段重复和空值


4、全文索引


对于字符串或文本类型建立的索引,提高查询文本关键字的速率
只有char varchar text 等数据类型才可以建立全文索引,也只有mylsam存储引擎支持


5、空间索引


对空间数据类型建立的索引,只有空间数据类型支持

1、普通索引的建立:

Create index 索引名 on 表名<字段1,[字段2,....字段n]>;


#注意:对于建立联合索引的字段,所有字段同时查效率才会有提高,只查其中一部分效率是和普通查询差不多的。
联合索引:多列的组合索引,查询效率高于多个单列索引合并的效率。


2、以修改的方式创建索引


 

alter table 表名 add index 索引名 (字段2,..., 字段n]);


3、删除索引


drop index 索引名 on 表名;


4、查看表中所有索引


 

show index from 表名;或者 show keys from 表名;

六、索引的作用:


-- 索引就是用来提高查询效率的数据库对象,除此之外没有其他功能
-- 索引会使用利于查询的数据结构来组织存储数据

七、普通索引


1、普通索引的创建

-- 学生姓名经常被查询,可以为它创建一个索引

create index ind_sname on student(s_name);

select s_name from student;

-- 在数据量比较少的情况下,索引对查询效率的提升不会很明显
-- 数据量越大,索引对查询效率的提升越明显

2、以修改表的方式添加索引


 

alter table student add ind_sage(s_age);

3、查看表中所有索引


 

show index from student;

4、索引的删除

drop index ind_sage on student;
drop index ind_sname on student;

八、联合索引

-- 对多个属性列同时添加一个索引
-- 创建多列联合索引
create index ind_sname on student(s_id,s_name);
-- 创建多个单列索引
create index ind_sid on student(s_id);
create index ind_sname on student(s_name);

-- 在查询语句中,多列同时查询时,添加多列联合索引比多个单列索引查询效率高
select s_id,s_name from student;

九、唯一索引


1、创建唯一索引的基本格式:


 

create unique index <索引名> on <表名(属性名)>;
-- 创建唯一约束时会自动建立唯一索引,所以查询主键,外键或者带有唯一约束的字段时速度会更快一些。


2、以修改的方式添加唯一索引

alter table<表名> add unique (<属性名>);

-- 没有建立索引的表存不存在索引呢?
如果你有添加主键或外键等完整性约束的话,会默认创建唯一索引


唯一索引unique index

-- 唯一索引不允许字段(属性)的取值重复
-- 对添加了唯一约束的字段,会自动建立唯一索引
-- 对建立了唯一索引的字段,会自动添加唯一约束

-- 唯一索引和唯一约束本质上是同一个东西,只是从不同的角度来看而已
-- 从提高查询效率来看,称为唯一约束
-- 从限制表中属性的取值范围来看,称为唯一约束


 
 #唯一索引的创建

 -- 学生姓名经常被查询,可以为它创建一个索引
  create unique index ind_sname on student(s_name);
-- 以修改表的方式添加索引
alter table student add unique(s_name);
-- 复合唯一索引就相当于复合唯一约束

十、主键/外键索引


1、创建主键/外键索引


和外键约束时会自动建立主键索引,或者在创建表格时创建主键索引
如:create table 表名 {id int;name varchar(20);
primary key(id) -- 为属性id创建一个主键索引}

2、以修改的方式添加主键约束


alter table<表名>add primary key(<列名>);
-- 为什么外键也会建立主键索引呢?
由于外键是关联其他表的主键,外键和主键是一种映射关系,所以它会建立主键索引

创建表时添加主键索引


 

create table 表名(
id int primary key, -- 主键约束(主键索引)
name varchar(20)
);

以修改表结构的方式添加主键索引

alter table 表名 add primary key(id);
-- 主键/外键索引不允许字段(属性)的取值重复和为空
-- 对添加了主键/外键约束的字段,会自动建立主键/外键索引
-- 对建立了主键/外键索引的字段,会自动添加主键/外键约束

-- 主键/外键索引和主键/外键约束本质上是同一个东西,只是从不同的角度来看而已
-- 从提高查询效率来看,称为主键/外键约束
-- 从限制表中属性的取值范围来看,称为主键/外键约束


 

十一、全文索引


全文索引主要针对文本的内容进行分词,加快查询速度,如资料查询,论文查询,文本查询等。


1、创建全文索引的基本格式:


 

create full text index<索引名> <表名(字段名(length))>;


2、添加全文索引


 

alter table 表名 add fulltext (字段1[,字段2,....,字段n]);

十二、空间索引:


空间索引对空间数据类型(点,线、面和立体图形等)建立的索引,一般只有制作地图或者制作模型等相关领域有涉及到,这里就不做过多介绍了。

全文索引fulltext index


-- 只能对文本类型(字符串/文本)添加的索引
-- 只能用于提高文本类型的查询效率,如:字符串模糊匹配,搜索关键字信息

#全文索引的创建

-- 对班级名称创建全文索引
create fulltext index fullind_cname on class(c_name);


#以修改表的方式添加全文索引


 

alter table teacher add fulltext(t_name);

空间索引:
-- 对空间数据类型建立的索引,用于提高空间数据类型的查询效率

十三、索引的优缺点


优点:索引能够极大的提高查询效率
缺点:索引会占用额外的存储空间
索引对数据的删除和修改等操作而言,是一种负担
索引会降低数据库的数据维护速度,降低数据库的可维护性

十四、使用索引时的注意事项


1、建立索引提高了查询效率,但是不利于增加,修改和删除等操作
2、对于数据小和经常进行修改,删除等操作的表避免使用索引
3、对于需要频繁查询的字段应该创建索引
4、最适合创建索引的列是where子句中的列,而不是select里面的列,也就是建立索引要精准
5、根据数据查询的具体需求来决定是否建立索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翘指

创作不易,一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值