Skip to content
目录概览

索引可以随意无限的创建吗?创建索引的原则有那些?

索引虽好,但也不是无限制的使用,最好符合一下几个原则

  1. 最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整;

  2. 较频繁作为查询条件的字段才去创建索引;

  3. 更新频繁字段不适合创建索引;

  4. 若是不能有效区分数据的列不适合做索引列(如性别,男女未知,最多也就三种,区分度实在太低);

  5. 尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可;

  6. 定义有外键的数据列一定要建立索引;

  7. 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引;

  8. 对于定义为text、image和bit的数据类型的列不要建立索引。