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);
设