什么是索引,索引的优劣势,索引的分类,那些情况需要创建索引那些情况不需要

什么是索引

索引可以简单理解为是一种排好序的快速查找数据结构
索引对于排序和条件有很大的影响

索引的优势

1.提高数据检索效率,降低数据库io成本
2.降低数据排序的成本,降低cpu消耗

索引的劣势

1.索引实际上也是一张表,保存了主键与索引字段,占用空间
2.虽然提高了查询速度,但更新表会修改数据和修改索引,会变慢

索引分类

单值索引:
一个索引只包含一个列,一个表可以有多个单值索引
唯一索引:
索引列的值必须唯一,但允许有空值
复合索引:
一个索引包含多个列(复合索引要遵循最左原则)

索引语法

创建:
create index 索引名 on 表名(字段名)
alter 表名 add index 索引名 on(字段名)
删除:
drop index 索引名 on 表名
查看:
show index from 表名

索引结构

1.BTree索引:
2.hash索引

哪些情况需要创建索引

1.主键自动建立唯一索引
2.频繁作为查询条件的字段
3.外键关系建立索引
4.推荐建立组合索引
5.统计或者分组字段

哪些情况不要创建索引

1.表数据在300w一下不推荐
2.经常增删改的表
3.数据重复平均的列

索引下推

5.7之后才有的
没有之前是:组合索引两个字段,通过第一个字段筛选把数据拿到server,server在筛选第二个字段
有了之后:下推到存储引擎来进行两个字段的筛选

回表

通过索引查询到以后,在回到表里去拿对应的数据行信息

索引覆盖

查询的字段都被索引包含,不用回表

Guess you like

Origin blog.csdn.net/m0_48358308/article/details/111303195