码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Mysql--索引分类


    Mysql--索引分类

    • 1. 索引分类
    • 2. 聚集索引&二级索引

    1. 索引分类

    在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。

    在这里插入图片描述

    2. 聚集索引&二级索引

    而在在InnoDB存储引擎中,根据索引的存储形式,又可以分为以下两种:

    在这里插入图片描述
    聚集索引选取规则:

    1. 如果存在主键,主键索引就是聚集索引。
    2. 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
    3. 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引。

    聚集索引和二级索引的具体结构如下:
    在这里插入图片描述

    • 聚集索引的叶子节点下挂的是这一行的数据 。
    • 二级索引的叶子节点下挂的是该字段值对应的主键值。

    接下来,我们来分析一下,当我们执行如下的SQL语句时,具体的查找过程是什么样子的。
    在这里插入图片描述
    具体过程如下:
    ①. 由于是根据name字段进行查询,所以先根据name='Arm’到name字段的二级索引中进行匹配查找。但是在二级索引中只能查找到 Arm 对应的主键值 10。

    ②. 由于查询返回的数据是*,所以此时,还需要根据主键值10,到聚集索引中查找10对应的记录,最终找到10对应的行row。

    ③. 最终拿到这一行的数据,直接返回即可。

    回表查询: 这种先到二级索引中查找数据,找到主键值,然后再到聚集索引中根据主键值,获取
    数据的方式,就称之为回表查询。

    思考题:
    以下两条SQL语句,那个执行效率高? 为什么?
    A. select * from user where id = 10 ;
    B. select * from user where name = ‘Arm’ ;
    备注: id为主键,name字段创建的有索引;

    解答:
    A 语句的执行性能要高于B 语句。
    因为A语句直接走聚集索引,直接返回数据。 而B语句需要先查询name字段的二级索引,然后再查询聚集索引,也就是需要进行回表查询。

    思考题:
    InnoDB主键索引的B+tree高度为多高呢?
    在这里插入图片描述
    假设:
    一行数据大小为1k,一页中可以存储16行这样的数据。InnoDB的指针占用6个字节的空间,主键即使为bigint,占用字节数为8。

    高度为2:
    n * 8 + (n + 1) * 6 = 161024 , 算出n约为 1170
    1171
    16 = 18736
    也就是说,如果树的高度为2,则可以存储 18000 多条记录。

    高度为3:
    1171 * 1171 * 16 = 21939856
    也就是说,如果树的高度为3,则可以存储 2200w 左右的记录。

  • 相关阅读:
    剑指 Offer 06. 从尾到头打印链表
    uView 中select组件确认选择问题
    企业选择ai智能电话机器人的好处
    can 分析仪 can卡 ——深圳超力源7220 电摩保护板联调时一个CAN盒解决所有的问题
    一个非常明显的现象,正在发生——元宇宙正在被越来越多的人所推崇
    nova相机功能又㕛叒叕升级了!!!拍人像更自然
    接口响应慢该如何排查
    代码随想录算法训练营第四十四天丨 动态规划part07
    Android控件全解手册 - 一篇文学会Switch
    .Net Core 实现WebSocket Server 的另外三种方式
  • 原文地址:https://blog.csdn.net/weixin_53066120/article/details/136276793
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号