MySQL基础学习笔记——联合索引

联合索引

  • 又叫做“复合索引”,即一个索引覆盖表中两个或者多个字段,一般用在多个字段一起查询的时候。
  • 好处减少磁盘空间开销,因为每个创建一个索引其实就是创建了一个索引文件,那么会增加磁盘的开销。
# 创建教师表
create table teacher(
    id int unsigned primary key auto_increment,
    name varchar(10),
    age int unsigned,
    address varchar(32)
);
# 创建联合索引
alter table teacher add index(name, age, address);

联合索引的最左原则

  • 在使用联合索引的时候,我们遵循一个最左原则,即index(name,age,address)
    • 支持namename+agename+age+address组合查询,而
    • 不支持ageaddressage+addressname+address的组合查询,
      因为没有用到联合索引。
  • 说明:在使用联合索引查询数据的时候一定要保证联合索引的最左侧字段出现在查询条件里面,防止联合索引失效,而且不能跳跃联合。
# 下面的查询使用了联合索引
select * from teacher where name='xx';
select * from teacher where name='xx' and age=yy;
select * from teacher where name='xx' and age=yy and address='zz';
# 下面的查询没有使用联合索引
select * from teacher where age=yy;
select * from teacher where address='zz';
select * from teacher where name='xx' and address='zz';
select * from teacher where age=yy and address='zz';

MySQL中使用索引的优缺点及原则

  • 优点加速数据的查询速度
  • 缺点:创建索引会消耗时间和占用磁盘空间,并且随着数据的增加所消耗的时间也会怎加。
  • 使用原则
    1. 通过优缺点对比,不是索引越多越好,而是需要自己合理的使用;
    2. 经常更新的表就避免对其进行过多索引的创建,对经常用于查询的字段应该创建索引
    3. 数据量小的表最好使用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果。
    4. 在一字段上相同值比较多不要建立索引,比如“性别”字段上只有男、女两个不同的值,相反的,在一个字段上不同值较多可以建立索引

你可能感兴趣的:(学习笔记)