索引虽然好,但是不是无限制的使用,最好符合以下几个原则:
- 最左匹配原则,组合索引非常重要的原则,mysql 会一直向右匹配直到遇到范围查询(>,<,between,like)就停止匹配,比如 a = 1 and b = 2 and c > 3 and d = 4,如果建立(a,b,c,d)的索引则可以用到,a,b,d 的顺序可以任意调整。
- 较频繁作为查询条件的字段才去创建索引
- 更新频繁的字段不适合创建索引
- 若是不能有效区分数据的列不适合做索引(如性别,男女未知,最多也就三种,区分度实在太低)
- 尽量的扩展索引,不要新建索引。比如表中已经有 a 的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可
- 定义有外键的数据列一定要建立索引
- 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引
- 对于定义为 Text,image 和 bit 的数据类型的列不要建立索引