数据库-索引分类(单列索引、复合索引、聚簇索引、二级索引)

数据库-索引分类(单列索引、复合索引、聚簇索引、二级索引)

码农世界 2024-05-22 前端 74 次浏览 0个评论

文章目录

    • 单列索引与复合索引?
      • 单列索引
        • 主键索引(Primary Key Index)
        • 唯一索引(Unique Index)
        • 普通索引(Regular Index 或 Non-unique Index)
        • 全文索引(Full-text Index)
        • 复合索引
        • 聚集索引(聚簇索引)&二级索引?
        • 本篇小结

          更多相关内容可查看

          单列索引与复合索引?

          单列索引

          在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、普通索引、全文索引。

          主键索引(Primary Key Index)
          • 主键索引是数据库表中的一个特殊索引,它包含一个唯一的标识符(或称为键),用于唯一地标识表中的每一行。
          • 主键索引不允许有空值(NULL),并且表中的每一行都必须具有一个主键值
          • 由于主键索引的唯一性和非空性,数据库系统可以快速地通过主键来检索数据。
          • 大多数数据库系统都会自动为主键创建一个唯一索引,以加速查询性能。
          唯一索引(Unique Index)
          • 唯一索引确保索引列中的每个值都是唯一的。但是,与主键索引不同,唯一索引允许有空值(除非列被定义为NOT NULL)。
          • 一个表可以有多个唯一索引,但只能有一个主键索引。
          • 使用唯一索引可以确保数据的唯一性,并且可以通过该索引快速地检索数据。
          普通索引(Regular Index 或 Non-unique Index)
          • 普通索引是最常见的索引类型,它仅仅是为了提高查询性能而创建的。
          • 普通索引允许在索引列中存在重复的值和空值。
          • 与主键索引和唯一索引相比,普通索引的创建和维护成本通常较低。
          • 在选择使用哪种索引时,需要根据具体的查询需求和性能考虑来权衡。
          全文索引(Full-text Index)
          • 全文索引是一种特殊类型的索引,用于在文本字段(如VARCHAR、TEXT等)上执行全文搜索。
          • 全文索引可以针对表中的一个或多个列创建,并允许用户根据文本内容(如单词、短语等)来检索数据。
          • 全文索引通常使用倒排索引技术来实现,该技术将文本内容分解为单词或短语,并将它们与包含这些单词或短语的文档相关联。
          • 全文索引在需要执行复杂的文本搜索查询时非常有用,例如在搜索引擎或内容管理系统中。

          复合索引

          在MYSQL多列上创建的索引, 就是一个复合索引(组合索引)

          设计复合索引的一个重要原则是能用窄索引不用宽索引,因为窄索引(索引列为1-2列的索引)往往比宽索引(索引列超过2列的索引)更有效。同时,创建和维护索引也需要消耗一定的时间和存储空间,因此在使用复合索引时,需要根据实际的需求和数据的特点来选择合适的索引列和索引类型。

          聚集索引(聚簇索引)&二级索引?

          而在在InnoDB存储引擎中,根据索引的存储形式,又可以分为以下两种:

          聚集索引选取规则:

          • 如果存在主键,主键索引就是聚集索引。
          • 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
          • 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引

          聚集索引和二级索引的具体结构如下:

          • 聚集索引的叶子节点下挂的是这一行的数据 。
          • 二级索引的叶子节点下挂的是该字段值对应的主键值。

          接下来,我们来分析一下,当我们执行如下的SQL语句时,具体的查找过程是什么样子的。

          具体过程如下:

          1. 由于是根据name字段进行查询,所以先根据name='Arm’到name字段的二级索引中进行匹配查找。但是在二级索引中只能查找到 Arm 对应的主键值 10。
          2. 由于查询返回的数据是*,所以此时,还需要根据主键值10,到聚集索引中查找10对应的记录,最终找到10对应的行row。
          3. 最终拿到这一行的数据,直接返回即可

          回表查询: 这种先到二级索引中查找数据,找到主键值,然后再到聚集索引中根据主键值,获取数据的方式,就称之为回表查询。

          本篇小结

          有小伙伴对其他数据库内容感兴趣,可以通过以下链接进行查看

          数据库-索引(基础篇)

          数据库-索引结构(B-Tree,B+Tree,Hash,二叉树)

          数据库-索引语法(增删查)

          数据库-索引分类(主键索引、唯一索引、普通索引、全文索引)

          数据库-索引使用(验证索引效率、单列索引与联合索引、最左前缀法则)

          索引失效情况

转载请注明来自码农世界,本文标题:《数据库-索引分类(单列索引、复合索引、聚簇索引、二级索引)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,74人围观)参与讨论

还没有评论,来说两句吧...

Top