索引的使用
目录
1.使用索引
1.1自动创建索引
1.2手动创建
1.2.1 主键索引
1.2.2 唯一索引
编辑 1.2.3 普通索引
1.2.4 创建复合索引
1.2.5 查看索引
编辑 1.3 删除索引
1.3.1 主键索引
1.3.2 其他索引
编辑 1.4 关于索引的注意事项(也就相当于索引的优化)
2.怎么查看有无走索引
2.1.先为学生表创建一个索引
2.1.1 创建学生表
2.1.2 查看学生表中的主键信息
2.1.3 创建复合索引
编辑 2.3.4 查看是否使用索引
3.实际应用练习
1.使用索引
1.1自动创建索引
- 当我们为一张表加主键约束(Primary Key),外键约束(Foreign Key),唯一约束(Unique)时,MYSQL会为对应的列自动创建一个索引
- 如果表不指定任何约束时,MYSQL会自动为每一列生成一个索引并用ROW_ID进行标识
1.2手动创建
1.2.1 主键索引
1.2.2 唯一索引
1.2.3 普通索引
1.2.4 创建复合索引
1.2.5 查看索引
方式一:show keys from 表名
1.3 删除索引
1.3.1 主键索引
1.3.2 其他索引
1.4 关于索引的注意事项(也就相当于索引的优化)
- 索引创建在高频查询的列上
- 索引需要占用额外的存储空间
- 对表进行插入、更新和删除操作时,同时也会修改索引,可能影响性能
- 创建过多或者不合理的索引会导致性能下降,需要谨慎选择和规划索引
2.怎么查看有无走索引
2.1.先为学生表创建一个索引
2.1.1 创建学生表
2.1.2 查看学生表中的主键信息
2.1.3 创建复合索引
创建方法: create index index_student_sn_name on student(sn,name);
2.3.4 查看是否使用索引
explain +语句
1.不加条件使用所有
2.使用主键查询
3.子查询中使用索引
其中type的访问类型:
从左至右,性能由好到差
1.All:扫描全表
2.index:扫描全部索引
3.range:扫描部分索引,索引范围扫描,对索引的扫描开始于某一点,返回匹配值域的行,常见于between、< 、> 等的查询
4.ref:使用非唯一索引或非唯一索引前缀进行查找,不是主键或不是唯一索引
5.eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描
6.const,system:单表中最多右一个匹配行,查询起来非常迅速,例如根据主键或唯一索引查询。system是const类型的特例,当查询的表只有的情况下,使用system。
7.NULL:不访问表或者索引,直接就能得到结果,如:
3.实际应用练习
1.使用普通索引
2.使用复合索引