MySQL数据库索引

目录

结构

 思考题

分类

语法

思考题

性能分析

使用规则


结构

MySQL索引的底层实现通常基于B树(B-tree)或哈希(Hash)数据结构。这两种数据结构在数据库管理系统中起着至关重要的作用,用于加速数据检索和优化查询性能。以下是关于MySQL索引底层实现的详细信息:

  1. B树索引(B-tree Index)

    B树是MySQL最常用的索引结构,用于实现大多数索引类型,包括普通索引、唯一索引和主键索引。B树索引有以下关键特点:

    • 平衡性:B树是一种平衡树结构,它确保了所有叶子节点到根节点的深度相同,从而保持了查询效率。

    • 有序性:B树的叶子节点按键值的大小有序排列,这使得范围查询、排序和分组等操作非常高效。

    • 支持部分匹配:B树可以进行前缀匹配,因此可以加速以通配符开头的搜索(例如,LIKE 'prefix%')。

    • 支持范围查询:由于B树是有序的,它非常适合执行范围查询操作(例如,BETWEEN<>)。

    B树索引在大多数情况下表现良好,但对于全文搜索等特定用例,可能不如其他索引类型效果好。

  2. 哈希索引(Hash Index)

    哈希索引是另一种索引类型,通常用于用于等值查找的情况。它有以下特点:

    • 高速查找:哈希索引将索引字段的值通过哈希函数映射为索引的键值,因此可以实现非常快速的等值查找。

    • 不支持排序和范围查询:哈希索引不支持范围查询、排序等操作,因为它不是按键值排序的。

    • 不支持部分匹配:哈希索引只支持精确匹配,不能用于通配符或前缀匹配的查询。

    哈希索引通常用于内存表,对于需要快速查找的场景非常有用。然而,对于大型磁盘表,B树索引更常见,因为它支持更多类型的查询。

 思考题

分类

语法

MySQL中创建索引的语法如下:

CREATE INDEX index_name
ON table_name (column1, column2, ...);

其中,各部分的含义如下:

  • CREATE INDEX:这是用于创建索引的SQL语句。
  • index_name:指定索引的名称。索引名称应该在表中是唯一的。
  • table_name:指定要创建索引的表的名称。
  • (column1, column2, ...):列出要在索引中包含的列的名称。您可以为一个或多个列创建索引。

思考题

 1.

2.

3.

4. 

性能分析

 

配置过程:

 

举例一个慢日志查询:

日志:

 

使用规则

 

 

  • Is null 和 is not null走不走索引看的是表的分配,如果null的多,查null就不走索引,走not null就走索引 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发呆的百香果子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值