蓝盟IT小贴士,来喽!
返回表的操作
在数据库中,只要涉及索引,就不能总是返回到表操作。 当然,这也是我们今天所讲内容开场白的基础。
要返回到表,必须从索引开始。 不要担心。 不能长篇大论。 下面简要介绍主键索引和常规索引。 这是为了让用户了解回桌操作。 如果您熟悉返回表格的操作,可以跳过这一段。
在这里,只将Innodb存储引擎作为讲义对象。
主键索引
作为主键索引基础的数据存储在b树中实现。 简单地说,叶子节以外的节点中存储了主键值。 叶的节点存储着整行的数据。
主键以外的索引
主键索引以外的索引称为非主键索引。 与主键索引不同,主键索引以外的叶节点包含主键的值。
那么,让我们回到最初的问题。 倒带操作是什么?
我们用非主键索引检索一行数据时,此时的检索方法是检索非主键索引树,获取对应的主键值,用主键索引树检索对应的行数据。
这个操作称为倒带操作。
是的。 在这里,你应该知道什么是返回时钟的操作。 简单地说,在非主键索引树中获取相应的主键值,然后返回主键索引查找相应的原始数据。
这假设要搜索的字段不存在于非主键索引树中。
低版本操作
返回表的操作已完成。 让我们回到这篇文章的主题——索引。
实际上,MySQL 5.6版之前没有索引功能,从5.6版以后开始添加了这个优化项目。 因此,在索引之前,让我们先来回顾一下没有此功能时的处理方法。
我们用实际的例子进行说明。
这里有用户表user,记录着用户的姓名、性别、身高、年龄等信息。 表中的id为自我增殖主键,(name,sex )为联合索引。 这里用1表示男性,用2表示女性。 我现在需要查找所有姓王的男性的信息。
但是其实现原理是什么呢?
根据联合索引的最左前缀原则,如果在非主键索引树中找到满足条件的第一个值,则通过叶节点中记录的主键值返回主键索引树,比较当前搜索的性别。
看,低版本的所有数据都需要返回表中,增加了树的搜索次数。 如果要查找的数据量太大,必然会失去性能。
高级版本控制
完成了低版本的操作。 让我们回到这篇文章的主题——索引。知道痛点,那么怎么解决呢? 很简单。 满足条件后返回表。 结合我们的例子来说,当满足性别sex=1时,返回表格进行检索。 这样本来可能需要进行4次倒带,但现在可能只需要2次。
文/上海蓝盟 IT外包专家