- 什么事索引:索引是帮助MySQL高级获取数据库的数据结构(数据结构)
- 索引两大功能:
- 排序:比如order by
- 快速查找 : where 条件
- 索引分类
- 主键索引:设定为主键后数据库会自动建立索引,innodb为聚簇索引
- 单值索引:即一个索引只包含单个列,一个表可以有多个单列索引
- 唯一索引:索引列的值必须唯一,但允许有空值
- 复合索引:即一个索引包含多个列(在数据库操作期间,复合索引比单值索引所需要的开销更小(对于相同的多个列建索引)
当表的行数远大于索引列的数目时可以使用复合索引)
- 哪些情况需要创建索引
- 主键自动建立唯一索引
- 频繁作为查询条件的字段应该创建索引(where 后面的语句)
- 查询中与其它表关联的字段,外键关系建立索引
- 单键/组合索引的选择问题,who?(在高并发下倾向创建组合索引)
- 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
- 查询中统计或者分组字段
- 哪些情况不要创建索引
- 表记录太少
- 经常增删改的表
- Why:提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。\n因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件
- Where条件里用不到的字段不创建索引
- 数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据列建立索引。\n注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
-
来源:oschina
链接:https://my.oschina.net/u/3690153/blog/4278814