mysql数据库(12)--进阶二之索引

一、什么是索引?

索引是帮助mysql高效获取数据的数据结构,其本质就是排好序的快速查找数据结构

二、索引的优缺点

优点:

1、提高数据的检索效率;

2、降低数据排序的成本

缺点:

1、索引也是一张表,该表保存了主键和索引字段,并执行实体表的记录,所以索引列也需要占用空间;

2、增删改表中的数据需要维护索引,会降低操作效率

三、索引的分类

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

2、唯一索引:索引列的值必须唯一,但允许有空值

3、复合索引:一个索引包含多个列

4、主键索引

四、索引的操作

1、创建

  • create  [unique]index 索引名称 on 表名(列名)

2、删除

  • drop index 索引名 on 表名

3、使用alter

  • alter table 表名 add index 索引名(列名)
  • alter table 表名 add unique 索引名(列名)
  • alter table 表名 add primary key(列名)

4、查看

  • show index from 表名

五、索引的结构

 【查找过程】

如果要查找数据项29,首先会把磁盘块1由磁盘加载到内存,此时发生一次IO,在内存中用二分查找确定29在17和35之间,锁定磁盘款1的P2指针(内存时间很短,可以忽略不计);通过磁盘块1的P2指针的磁盘地址把磁盘块3由磁盘加载到内存,发生第二次IO;29在26和30之间,锁定磁盘块3的P2指针,通过指针加载磁盘块8到内存,发生第三次IO,同时内存中做二分查找找到29,结束查询,总计3次IO.

六、不适合创建索引的情况

  • 表记录太少
  • 频繁增删改的表
  • where条件子句中使用不到的字段
  • 数据重复且分布平均的表字段  -- 如果某个数据列包含许多重复项,建立索引不会有太大的实际效果
原文地址:https://www.cnblogs.com/yif930916/p/15041608.html