什么是索引?
索引是帮助MySQL有效获取数据的数据结构
索引的好处
假设我们有一个表T,它有两个字段,Col1和颜色,如下:
非协助
没有索引,SQL:从T.COL2 = 89中选择 * *,您需要遍历表格中Col2比较的比较,因此您需要比较6次才能找到它。只是几行记录。如果这是一百万级和数千万的手表,该怎么办?它是否更具比较,所以您不能缓慢地死亡。
吸引力
COL2添加了一个索引,MySQL将保持数据结构。据称MySQL使用的数据结构是红色和黑色树(右子树的元素大于根节点,左子树的元素较小,较小比根节点)要建立一个索引,就像图的右侧一样。在这种情况下,SQL仅需要找到2次,这是更快的吗?这是indexes.index的好处使用相对聪明的数据结构,使用数据结构的特征可大大减少遍历遍历的数量
二进制树
红树
有
B树
二进制树使用COL1作为上面的索引。Col1列的数据是从上到下增加,类似于自我提示的主钥匙。
红树和黑树是一棵平衡的二进制树。JDK1.8的施法使用红树和黑树。存储大数据的量。
哈希执行索引键的哈希计算,以定位数据存储的位置。
B树的叶节点具有相同的深度。叶节点的指针是从左到右的空索引元素中所有索引元素中的数据索引
B+树(B-Tree变体)非叶节点不存储数据,只存储索引(冗余),您可以将更多的索引叶节点放置以包含叶子节点的所有索引字段以连接以提高间隔的性能使用权
InnoDB存储引擎,两个文件分别存储:
FRM:表文件
IBD:表索引和数据文件
Myisam存储引擎的三个文件分别存储:
FRM:表数据结构文件
myi:表索引文件
myd:表数据文件
MyISAM索引文件和数据文件是分开的(非接收),结构如图所示。
表数据文件本身是在B+树组织的索引结构文件中收集索引。索引叶节点包含一个完整的数据记录主要钥匙值?(一致性和保存存储空间)
两个级别索引(辅助索引)以建立第二级索引B+树的示例为例
当构建第二个级别索引时,叶节点数据仅存储索引和主密钥ID,并将索引名称字段作为叶子节点的关键字将其分类为“索引名称”字段。
首先,爱丽丝将通过第二级索引查询。在获取叶节点主密钥ID到18之后,将在18构建的B+树中查询所有字段信息,以构建为主密钥索引。这是SO称为的返回手表。
关节指数(复合指数)
可以看出,当建立关节索引B+树时,数据将以建立索引的顺序排列。首先,对名称字段进行排序,然后按名称字段进行排序。如果名称字段的值相同,例如,帐单将按年龄顺序排列,依此类推。最后,将发现相应的主密钥ID查询由主键构建的B+树中的完整线信息。
在阅读了联合指数结构后,来宾官已经知道,最好的左前缀原则是为什么第一个领域(名称)必须具有生效的才能,因为只有第一领域是相同的,第二个领域(年龄)在那里Anysales。
同时,如果同时有两个索引,则是冗余索引。建立索引时,您只需要建立联合索引即可。
原始https://juejin.cn/post/709631032331385870