vlambda博客
学习文章列表

问答 | MySQL 什么时候不走索引?

主要三种情况

1、不满足走索引的条件,常见的情况有
   1.1、不满足最左匹配原则
   1.2、查询条件使用了函数
   1.3、or 操作有一个字段没有索引
   1.4、使用 like 条件以%开头
2、走索引效率低于全表扫描,常见的情况有
   2.1、查询条件对 null 做判断,而 null 的值很多
   2.2、一个字段区分度很小,比如性别、状态
3、需要回表的查询结果集过大,超过了配置的范围

在 MySQL 中创建索引的原则有以下几点:
1、表的主键、外键必须有索引;
2、经常与其他表进行连接的表,在连接字段上应该建立索引;
3、选择唯一性索引;
4、对于查询频率高的字段创建索引;
5、对排序、分组、联合查询频率高的字段创建索引;
6、尽量使用前缀来索引;
7、索引应该建在选择性高的字段上,在选择性低的字段上不必要建立索引,如性别字段;
8、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
9、索引列不能参与计算,保持列“干净”;
10、对于定义为 text、image 和 bit 的数据类型的列不要建立索引;
11、若在实际中,需要将多个列设置索引时,可以采用多列索引;
12、一个表的索引的数目不宜太多;
13、删除不再使用或者很少使用的索引,避免对执行计划造成负面影响;