MySQL索引学习记录(创建、删除、优缺点、底层结构、生失效原则等等)

1. 认识索引

1.什么是索引
MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。将数据进行排序整理的过程就称为索引,我们根据索引去查,提高效率

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。

2.MySQL索引分类

  • 主键(约束)索引
    主键约束+提高查询效率
  • 唯一(约束)索引
    唯一约束+提高查询效率
  • 普通索引
    仅提高查询效率
  • 组合(联合)索引
    多个字段组成索引
  • 全文索引
    solr、es
  • hash索引
    根据key-value 效率非常高

说明:

1.我们创建表时就会指定主键和唯一约束,那么就相当于给表的字段添加了主键和唯一索引。

2. 创建索引

1.在已有表的字段上直接创建【了解】

-- 创建普通索引
create index 索引名 on 表名(字段);
 
-- 创建唯一索引
create unique index 索引名 on 表名(字段);
 
-- 创建普通组合索引
create index 索引名 on 表名(字段1,字段2,..);
 
-- 创建唯一组合索引
create unique index 索引名 on 表名(字段1,字段2,..);

说明:

如果在同一张表中创建多个索引,要保证索引名是不能重复的

上述创建索引的方式比较麻烦,还需要指定索引名

采用上述方式不能添加主键索引

【准备的创建表的SQL语句】

create database day04;
 
use day04;
-- 创建学生表
CREATE TABLE student(
 id INT,
 name VARCHAR(32),
 telephone VARCHAR(11)
);

【给上述表的字段设置索引】

1.给name字段设置普通索引
CREATE INDEX name_idx ON student(name);
2.给telephone字段设置唯一索引  
CREATE UNIQUE INDEX telephone_uni_idx ON student(telephone);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值