美文网首页MySQL相关
数据库中的索引

数据库中的索引

作者: 柳蒿 | 来源:发表于2019-10-18 08:36 被阅读0次

    SQL数据库的两种引擎:
    MyISAM:
    查询速度较快,适合读较多的场景。
    不支持事务,也不支持崩溃后的数据恢复。
    锁的粒度较大,只有表锁。
    不支持外键

    InnoDB:
    查询的速度稍慢,适合写较多的场景。
    支持事务,支持崩溃后的数据恢复,
    支持行锁。
    支持外键。

    索引的分类:主键索引,基本索引,唯一索引,复合索引

    索引的好处:

    • 加快查询的速度
    • 保证每一行数据的唯一性
    • 把随机IO变成顺序IO
    • 帮助服务器避免排序和临时表

    索引能加快查询的原因:把无序的数据变成相对有序。

    索引的坏处:

    • 索引需要占用物理空间,如果是聚簇索引占用的空间更多
    • 每次变更表数据的时候,索引都需要进行动态更新,数据维护时间长
    • 创建,维护索引都需要大量的时间,开销大。

    索引的数据结构种类:

    • 哈希表:使用哈希表作为索引,适合查询绝大多数查询需求为单条记录的情况
    • BTree:采用B+树作为索引数据结构,对于不同的数据库有不同的实现。
      MyISAM数据库中:树的data域存储的是记录的地址,按照B+树搜索算法找到目标key值,然后取出对应的data域的地址,找到对应的记录。
      InnoDB数据库中:数据表本身就是索引,这种索引也叫做聚簇索引。表的主键是key值,其余的索引是辅助索引,在通过辅助索引查找时,需要取出目标的主键,在主键索引中再查询一遍,因此主键的字段不宜过长,也要避免使用非单调字段。

    相关文章

      网友评论

        本文标题:数据库中的索引

        本文链接:https://www.haomeiwen.com/subject/qcntmctx.html