什么是索引?

索引是数据库中的一种数据结构,用于快速定位表中特定数据
作用:

  • 大幅减少磁盘IO次数,提升查询速度
  • 加速WHERE,JOIN,ORDER BY ,GROUP BY 等操作

索引的优缺点

优点:

  • 提高查询速度,索引可以显著提高数据库查询的速度,特别是在大型数据库中,没有索引,数据库需要从头到尾扫描表,而有了索引,数据库可以直接定位到数据,从而大大加快查询速度
  • 优化查询性能: 通过使用索引,数据库可以更快地进行表与表之间的连接
  • 索引可以保证数据库表中每一行的唯一性
  • 加速分组和排序的时间

缺点:

  • 建立索引需要占用物理空间
  • 会降低表的增删改查效率,因为每次对表记录进行增删改,需要进行动态维护索引,导致增删改时间变长。

索引类型

  • 普通索引: 最基本的索引,没有任何限制
  • 唯一索引:索引列的值必须唯一,但是允许有空值,如果是组合索引,则不允许有空值
  • 主键索引: 是一种特殊的唯一索引,一个表只能有一个主键列,不允许为空值
  • 组合索引:一个索引包含多个列,实际开发中推荐使用组合索引
  • 全文索引:全文搜索的索引,FULLTEXT用于搜索很长一篇文章的时候,效果最好

主键索引和唯一索引的区别:
主键必是唯一,但是唯一不一定是主键
一张表上只能有一个是主键,但是可以有一个或者多个唯一索引。

索引的数据结构有哪些

索引的数据结构主要有B+树和哈希表,对应的索引分别为B+树索引和Hash索引。InnoDB引擎的索引类型有B+树索引和Hash索引。默认索引类型为B+树索引

Hash索引