MySQL索引学习一

75 阅读2分钟

一、什么是索引

MySQL中索引是一种数据结构,能够帮助提高数据库中数据检索效率。

二、为什么要用索引

  1. INNODB中的索引是通过B+树结构实现的,相比于顺序扫描,在大表中进行数据查找能够降低IO成本,提高查询效率。
  2. 索引是顺序存储的,不用再次进行排序。
  3. 索引进行分组、统计时,不会生成中间表,降低了内存的消耗。

三、什么情况适合使用索引

  1. 在查询语句中频繁作为查询条件的字段适合作为索引,包括where语句和关联语句。
  2. 用于排序、分组和统计的字段作为索引。

四、什么情况不适合使用索引

  1. 频繁更新的字段,在大表中频繁更新的字段作为索引,需要维护索引的树结构,开销非常大。
  2. 参与列计算的字段,因为列计算的值是无序的。
  3. 表数据比较少。
  4. 唯一性比较差,重复率高的字段。

五、索引分哪几类

  1. 大类分为:聚簇索引和非聚簇索引。聚簇索引的叶子节点保存的时表中的数据;非聚簇索引的叶子节点保存的是主键。
  2. 细类分为:主键索引、唯一索引、普通索引、复合索引、全文索引。
  3. 主键索引:主键索引提供了唯一约束,同时一张表只能有一个主键索引。主键索引也是聚簇索引,如果没有指定主键,INNODB会选择一个非空的唯一索引为主键。如果没有找到这样的索引,INNODB会隐式的生成一个主键。
  4. 唯一索引:提供了唯一约束,即该列的值不能重复。
  5. 普通索引:仅是索引结构,用于提高检索效率,没有特殊限制。
  6. 复合索引:表中的多列组合上创建的索引,只有查询条件中使用了复合索引的左边的字段时,复合索引才会生效。
  7. 全文索引:全文索引只在CHAR、VARCHAR和TEXT类型的字段中生效。