MySQL进阶-单列索引与联合索引

  • 单列索引:即一个索引只包含单个列。
  • 联合索引:即一个索引包含了多个列。

们先来看看 tb_user 表中目前的索引情况:

 在查询出来的索引中,既有单列索引,又有联合索引。

MySQL进阶-单列索引与联合索引_第1张图片

接下来,我们来执行一条SQL语句,看看其执行计划:

explain select id,phone,name from tb_user where phone = '17799990010' and name = '韩信';

MySQL进阶-单列索引与联合索引_第2张图片

 通过上述执行计划我们可以看出来,在and连接的两个字段 phone、name上都是有单列索引的,但是 最终mysql只会选择一个索引,也就是说,只能走一个字段的索引,此时是会回表查询的。

 紧接着,我们再来创建一个phone和name字段的联合索引来查询一下执行计划

create unique index idx_user_phone_name on tb_user(phone,name);

在业务场景中,如果存在多个查询条件,考虑针对于查询字段建立索引时,建议建立联合索引, 而非单列索引。

MySQL进阶-单列索引与联合索引_第3张图片

 

 

你可能感兴趣的:(MySQL数据库,mysql,数据库,sql)