性能调优-mysql索引底层数据结构与算法

索引是帮助mysql高效获取数据的排好序的数据结构。--索引的本质

当在数据库表中创建索引时,数据库管理系统会根据指定的字段或列创建一个索引结构,以便在查询数据时可以更快地找到匹配的记录,而不必逐条扫描整个表。

Mysql官网是这样描述的:索引用于快速查找具有特定列值的行。如果没有索引,MySQL 必须从第一行开始,然后读取整个表以查找相关行。表越大,成本就越高。如果表有相关列的索引,MySQL 可以快速确定要在数据文件中间查找的位置,而无需查看所有数据。这比顺序读取每一行要快得多。

2.索引的分类
按照数据结构分类
B+树索引:B+树索引是一种常见的索引类型,它使用B+树数据结构进行组织,适用于各种查询条件,包括精确匹配和范围查询
Hash索引:Hash索引使用哈希算法将索引值映射到哈希表中的槽位,适用于精确匹配查找,不支持范围查询。
Full-text索引:Full-text索引用于对文本字段进行全文搜索,支持模糊匹配和关键词搜索。

举例子:ALTER TABLE articles ADD FULLTEXT(content);

SELECT * FROM articles WHERE MATCH(content) AGAINST('计算机');

这将返回所有content字段中包含关键词"计算机"的文章记录。

按照索引在数据库中的角色分类
聚簇索引(也称为聚集索引):聚簇索引是按照索引列的顺序直接组织表中的数据。在InnoDB存储引擎中,主键索引就是聚簇索引,用于标识表中每一行,并决定了表中数据的物理存储顺序。
二级索引(也称为辅助索引):二级索引是基于聚簇索引之外的其他列构建的索引,包含索引列的值和对应的主键值,用于加快特定查询的速度。
按照索引的特性分类
主键索引(Primary Key Index):用于标识表中每一行的索引,每张表只能有一个主键索引。
唯一索引(Unique Index):确保索引列的值是唯一的,不允许重复值。
普通索引(Normal Index):最基本的索引类型,允许出现重复值和NULL值。
前缀索引(Prefix Index):对索引列的前缀进行索引,节省存储空间但可能牺牲查询精确性和性能。
其他索引分类
稀疏索引:稀疏索引是一种针对包含大量重复值的列的索引。它只保存索引列中不重复的值和对应的指针,以减少索引的存储空间。

索引数据结构有:二叉树,红黑树,Hash表,B-Tree,B+Tree。

这几种数据结构介绍:深入理解Mysql索引_mysql 的稀疏索引-CSDN博客

对于数据库表的InndB索引来说,底层即是B+Tree数据结构。

红黑树:二叉平衡

通过二叉树和红黑树展示,我们可以看出,随着树的高度的增加从而导致了查询的时间复杂的增加;在数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值