什么是索引?
索引是数据库中的一种数据结构,用于快速定位表中特定数据
作用:
- 大幅减少磁盘IO次数,提升查询速度
- 加速WHERE,JOIN,ORDER BY ,GROUP BY 等操作
索引的优缺点
优点:
- 提高查询速度,索引可以显著提高数据库查询的速度,特别是在大型数据库中,没有索引,数据库需要从头到尾扫描表,而有了索引,数据库可以直接定位到数据,从而大大加快查询速度
- 优化查询性能: 通过使用索引,数据库可以更快地进行表与表之间的连接
- 索引可以保证数据库表中每一行的唯一性
- 加速分组和排序的时间
缺点:
- 建立索引需要占用物理空间
- 会降低表的增删改查效率,因为每次对表记录进行增删改,需要进行动态维护索引,导致增删改时间变长。
索引类型
- 普通索引: 最基本的索引,没有任何限制
- 唯一索引:索引列的值必须唯一,但是允许有空值,如果是组合索引,则不允许有空值
- 主键索引: 是一种特殊的唯一索引,一个表只能有一个主键列,不允许为空值
- 组合索引:一个索引包含多个列,实际开发中推荐使用组合索引
- 全文索引:全文搜索的索引,FULLTEXT用于搜索很长一篇文章的时候,效果最好
主键索引和唯一索引的区别:
主键必是唯一,但是唯一不一定是主键
一张表上只能有一个是主键,但是可以有一个或者多个唯一索引。
索引的数据结构有哪些
索引的数据结构主要有B+树和哈希表,对应的索引分别为B+树索引和Hash索引。InnoDB引擎的索引类型有B+树索引和Hash索引。默认索引类型为B+树索引