赞
踩
索引相关理解:
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、覆盖索引:使用覆盖索引可以减少树的搜索次数,优化查询语句,是一个常用的性能优化,即索引中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。