InnoDB索引介绍
索引是什么
在Mysql中索引是帮助MySQL高效获取数据的数据结构。通俗来讲,数据库索引好比是书本的目录,能快速定位到想要找的内容。
索引分类
聚簇索引(主键索引),二级索引。
二级索引又可以细分为:唯一索引,组合索引,普通索引,全文索引。
聚簇索引(主键索引)
主键索引是InnoBD最重要的一个索引,每个表都必须有主键索引。主键索引因为是跟行数据存储在一起的(每个表只有一个主键),因此也称作聚簇索引。
- 如果你为表定义了一个主键,InnoDB将使用主键作为聚簇索引。
- 如果你不为表指定一个主键,InnoDB将使用第一个非空的唯一索引做为聚簇索引。
- 如果InnoBD表没有主键且没有适合的唯一索引,InnoDB将自动创建一个隐藏的聚簇索引。
唯一索引
可以为一个表建立多个唯一索引,该索引的特点是必须每个值都是唯一的。创建唯一索引的目一般是为了避免数据出现重复。
组合索引
是由多列组成的索引,查询时遵循最左匹配原则。合理使用组合索引能用到覆盖索引和索引下推等特性,性能上优于普通索引。
左匹配原则:1,需要按组合索引建立的顺序使用查询条件(书写时无要求,查询优化器会做优化), 2,字符串类的索引模糊匹配时不能用%开头
普通索引
MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插⼊重复值和空值。
全文索引
只有在MyISAM引擎、InnoDB(5.6以后)上才能使⽤,⽽且只能在CHAR,VARCHAR,TEXT类型字段上使⽤全⽂索引。
索引的优势和劣势
优势:
- 可以提⾼数据检索的效率,降低数据库的IO成本。
- 通过索引列对数据进⾏排序,降低数据排序的成本,降低了CPU的消耗。
劣势:
- 索引会占据磁盘空间。
- 索引虽然会提⾼查询效率,但是会降低更新表的效率。⽐如每次对表进⾏增删改操作。
索引使用建议
- 尽量使用主键索引当查询条件
- 主键索引应尽量保持顺序递增
- 频繁作为查询条件的字段应该创建索引
- 多表关联查询中,关联字段应该创建索引 on 两边都要创建索引
- 查询中排序的字段,应该创建索引
- 频繁查找字段,应该使用覆盖索引
- 查询中统计或者分组字段,应该创建索引
- 索引应选择区分度高的列做索引
- 组合索引优于多个单列索引

浙公网安备 33010602011771号