mysql 索引及其优化

索引相关理解:
1、索引是为了提高查询效率而出现的,像书的目录一样,是在存储引擎层实现的

2、索引的常见模型:哈希表,有序数组,搜索树。
2.1 哈希表适用于等值查询,因为不是有序的所以新增一个数时会比较快,查询一个范围时就必须全部扫描一遍
2.2 有序数组和哈希表不同,查询一个具体的值/范围比较方便 二分法可快速查找,插入一个数值时就比较慢,需要移动数据,适用于静态存储引擎
2.3 搜索树 有二叉搜索树和多叉搜索树,由于其特点查找和更新的时间复杂度都是O(log(N)), 对于数据量大的节点可采用N叉树,子节点大小由左向右依次递增,N叉树的N取决于数据块的大小

3、InnoDB中表是根据主键顺序以索引方式存放,称为索引组织表,
3.1 InnoDB中使用了B+树的索引模型,所以每个索引都对应一棵B+树,
3.2 根据树的叶子节点的内容分为主键索引(聚簇索引)和非主键索引(二级索引)。主键索引中存储的是对应的数据行 非主键索引中存储的是主键的id值
3.3 主键查询和非主键查询的区别是 只需要查主键这棵B+树就可以。非主键查询需要查到主键对应的id再用id从主键的索引树中查对应的行,此过程称为回表

4、索引的维护:
4.1 一般会采用自增主键 特殊情况会采用业务字段作为主键,如 表中就一个字段时
4.2 不用自增主键会出现的问题:业务字段较长其他索引存储主键 总体所占的空间会比较大。 插入数据时 可能会出现页分裂 影响数据页的利用
4.3

5、覆盖索引:使用覆盖索引可以减少树的搜索次数,优化查询语句,是一个常用的性能优化,即索引中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值