• 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中创建索引的语法如下:

    1. CREATE INDEX index_name
    2. 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就走索引 
  • 相关阅读:
    【美团3.18校招真题1】
    XJTUSE专业课与实验指南
    05_用一个栈实现另一个栈的排序
    爬虫-获取数据bs4
    【Pytorch with fastai】第 9 章 :表格建模深入探讨
    【算法设计技巧】贪婪算法与回溯算法
    【LeetCode力扣】287.寻找重复数(中等)
    研发工程师L2_选择题
    java 实现字典树(Trie)
    BGP路径属性与路由反射器
  • 原文地址:https://blog.csdn.net/m0_75100464/article/details/133900835