数据库中的索引

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

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

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

索引的好处:

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

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

索引的坏处:

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

索引的数据结构种类:

  • 哈希表:使用哈希表作为索引,适合查询绝大多数查询需求为单条记录的情况
  • BTree:采用B+树作为索引数据结构,对于不同的数据库有不同的实现。
    MyISAM数据库中:树的data域存储的是记录的地址,按照B+树搜索算法找到目标key值,然后取出对应的data域的地址,找到对应的记录。
    InnoDB数据库中:数据表本身就是索引,这种索引也叫做聚簇索引。表的主键是key值,其余的索引是辅助索引,在通过辅助索引查找时,需要取出目标的主键,在主键索引中再查询一遍,因此主键的字段不宜过长,也要避免使用非单调字段。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 索引 数据库中的查询操作非常普遍,索引就是提升查找速度的一种手段 索引的类型 从数据结构角度分 1.B+索引:传统...
    一凡呀阅读 8,245评论 0 8
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 7,307评论 1 8
  • 实践中如何优化MySQL 实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化...
    alcohol和cat阅读 5,295评论 4 22
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 10,184评论 0 30
  • 一叶微语梦中湖, 垂柳随风轻荡波。 绿影轻抚白云意, 深入潭中丈千尺。 戊戌年六月初五日遵义
    海步多阅读 2,206评论 5 7

友情链接更多精彩内容