数据库(11)索引

16.索引

16.1 mysql架构原理

在这里插入图片描述

16.2 为什么用索引

SQL性能下降,SQL慢,执行的时间长,等待时间过长

原因:1、SQL语句写的烂

​ 2、索引失效

​ 3、关联查询太多

​ 4、服务器或者各种参数的设置(缓冲、线程数等)

索引:

index帮助mysql进行高效查询的,为了帮助更高效率获取数据的数据结构

本质上索引是一个排好序的快速查找的数据结构

建议一张表不要超过5个索引

16.3 索引的分类

1、单值索引

一个索引只包含单个的列,一张表可以有多个单值索引

2、唯一值索引

当前索引列的值是必须唯一的,但是允许有空值的

3、复合索引

一个索引包含多个列

4、主键索引

主键不能重复,并且不允许出现空值

16.4 索引的创建

显示索引
show index from 表名

索引的语法规则
create 索引类型 索引名 on 表名(字段名)

1、单值索引
create index 索引名 on 表名(字段名)

alter table 表名 add index 索引名(字段名)

2.唯一值索引
create unique index 索引名 on 表名(字段名)

alter table 表名 add unique index 索引名(字段名)

3.复合索引
create index 索引名 on 表名(字段1,字段2,...)

alter table 表名 add index 索引名(字段名1,字段2,...)

删除索引
drop index 索引名 on 表名

注意点;当字段类型为blob或者text这些大的类型时要设定长度

16.5 创建索引的情况

1、主键自动创建主键索引

2、频繁作为查询条件的字段应该设置成索引

3、查询中与其他表关联的字段,外键建立索引

4、单值索引/符合索引的选择问题,在高并发下倾向于用复合索引

5、查询中需要进行排序,排序的字段建立索引,会提高排序效率

6、查询中统计或者分组的字段,创建索引

7、频繁更新的字段不适合创建索引,因为每次的更新不仅仅是更新了当前的记录,还需要更新索引,加重了io负担

8、where条件中用不到的字段不需要创建索引

9、经常增删改的表不需要创建索引

10、数据量较少的表不需要创建索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值