适合添加索引的场景
-
字段数值有唯一性的限制
业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引
不要以为唯一索引影响了insert的速度,这个速度损耗可以忽略,但提高查询速度是明显的
-
频繁作为where查询条件的字段添加index普通索引
-
经常group by 和order by的列(同时存在使用联合索引,group by 索引放前面,单独就单独创建)
-
更新update,删除delete的where条件列
-
去重字段需要创建索引
-
多表join字段需要创建索引
首先join表的数量尽量不要超过三张,其次对where条件创建索引,对于连接的字段创建索引
-
使用类型小的列创建索引
-
只用字符串前缀添加索引
-
区分度高(散列性高) 的列适合做索引
-
使用最频繁的列放到联合索引的最左侧
-
在多个字段都要创建索引联合索引优于单值索引
限制索引数目
-
单表不要超过六个索引
索引需要占据磁盘空间
insert,update,delete,的同时需要维护索引,造成负担
索引优化器选择成本增加
不适合创建索引的场景
- where,group by,order by中使用不到的字段不需要创建索引
- 数据量小(少于1000行)的表最好不要创建索引
- 大量重复数据的列不要创建索引
- 避免对更新的字段创建索引
- 不建议用无序的字段值创建索引
- 不要定义冗余重复的索引
小结
索引是一把双刃剑,提升速度的同时也占用了磁盘空间,同时还影响了增删改