四、如何使用B+树索引

根据前面所讲,我们应该比较熟悉B+树的属性:

  • 每个索引对应一棵B+树,Innodb引擎默认会为我们建立以主键为规则的聚簇索引
  • 聚簇索引的叶子节点保存用户的完整记录
  • 二级索引是索引列+主键的组合,与聚簇索引不同的是,二级索引不会保存用户的完整记录
  • B+树的每层页面都会按索引键升序排列,并会组成双向链表,用户的记录会组成单向列表

1、索引的代价

    每建立一个索引就会生成一棵B+树,就会多占用一部分空间;并且更新记录时,需要维护所有的B+树。B+树结构只是让查询变得更快,对于修改操作反而可能带来性能的下降,因为更新数据的同时也要维护B+树。

    所以说,并不是建立索引越多越有优势,我们需要在条件下使用。

2、使用索引的条件

  • 匹配全部,条件类似=,in
  • 配置左前缀。例如 like 'xx%'开头的可以用到索引,like '%xx'这辈子都用不到索引
  • 匹配范围。因为索引键都是顺序排列的,索引范围查询时也能使用到索引。in()这种语句也算是范围查询,成为单点范围
  • 排序、分组。索引列是升序排序的,所以排序规则与group by都能直接使用索引
  • 使用组合索引时,条件里索引列的前后顺序十分严格。比如索引idx_column1_column2,条件只有column1的语句可以使用此索引,条件有column1+column2也可以使用此索引,但是条件里只有column2语句是不能使用此索引的

3、使用索引的建议

  • 只为用于搜索、排序和分组的列建立索引
  • 索引列的格式定义尽量小。能用tinyint不要使用int
  • 索引列对应的值越分散越好
  • 任何索引都会包含主键。主键占用的字节越小越好,推荐自增
  • 不要建立重复的索引
  • 二级索引为了避免回表,可以覆盖索引

    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值