DAY04-索引篇

  1. 索引就是一种数据结构

  2. 常见的索引结构:哈希表、有序数据、搜索树

  3. 哈希表

    结构:一种键值对存储的数据结构
    实现方式:把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在相应的位置里。会出现多个key经过hash计算后,出现重复的情况,处理这种情况的办法就是 拉出一个链表。
    优点:等值查询速度非常快
    缺点:范围查询要进行全表扫描
    适用范围: 适用于等值查询的情况,比如 Memcached及其他一些NoSQL引擎

  4. 有序数据

    结构: 数组
    优点: 等值查询和范围查询都很快。等值查询用二分法,复杂度是O(log(N));范围查询直接查到第一个,然后向右遍历即可。
    缺点: 更新数据时候成本较高,最坏的情况需要移动所有的数据
    适用范围: 只适用于静态存储引擎,不会修改的数据。比如某年的人口数据

  5. 搜索树

    InnoDB索引结构是B+tree
    分为主键索引非主键索引
    主键索引的叶子节点存的是整行数据。在InnoDB中,也被称为聚簇索引
    非主键索引的叶子节点存的是 主键的值,也被称为 二级索引
    使用非主键索引会有回表的操作。就是现在二级索引上查到主键的值,然后在根据主键的值查到相应的数据。
    主键长度越小,普通索引的叶子节点就越小(因为叶子节点存的是主键的值),普通索引占用的空间也就越小。

  6. 覆盖索引:覆盖索引可以减少树的搜索次数,显著提查询性能。、

    select * from T where k = 3
    select id from T where k = 4 覆盖索引

  7. 最左前缀原则

  8. 索引下推

    5.6版本之后,在索引遍历的过程中,对索引中包含的字段先做判断,直接过滤调不满足的条件的记录,减少回表的次数。

总结:尽量减少访问资源是数据库设计的重要原则之一。索引的出现以及相应的优化,都是为了尽可能的减少访问数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值