课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
索引是程序员在学习数据库开发的时候需要重点掌握的一个编程知识,而今天我们就通过案例分析来了解一下,MySQL索引的概念与分类。
1、索引的基本概念
索引是数据库中一个很重要的概念,那么什么是索引呢,通俗的讲,索引是存储引擎用于快速找到记录的一种数据结构,就如同书的目录,当要查找某一行记录时,可以在索引中快速定位所在的位置信息,然后就可直接获取目标行的记录。
既然索引的出现是为了提高查找效率,那么肯定会存在不同的索引结构(模型),不同的索引模型肯定有其适应的场景,在下面文章中,我们将重点讲解常见的索引模型及其特点。
2、索引的分类
在B+树中,根据叶子结点的内容,可以将索引类型分为主键索引和非主键索引
主键索引
主键索引的叶子结点存放的是所查字段的整行数据,在InnoDB里,主键索引也被称为聚簇索引,它的索引和数据是存入同一个.idb文件中的,因此它的索引结构是在同一个树节点中同时存放索引和数据
非主键索引(普通索引)
非主键索引的叶子节点内容是主键的值。在InnoDB里,非主键索引也被称为二级索引。
覆盖索引
覆盖索引就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。即普通索引中除了包含指向的ID之外,也可以存放数据。
因为覆盖索引可以减少树的搜索次数,显著提升查询性能,所有覆盖索引是一个常用的性能优化手段。
联合索引
联合索引又可称为复合索引,对于这种类型的索引,MySQL从左到右的使用索引中的字段,一次查询只能使用索引中的一部分,并且是做左侧部分,满足左前缀原则。
左前缀原则可以这样理解,例如索引keyindex(a,b,c),它就支持索引(a),(a,b),(a,b,c)3种类型的组合进行查找,不支持索引b、c查找。
利用符合索引中的附加列,可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。