码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL进阶02_索引概述_结构_分类_语法


    2.索引(重点)

    文章目录

      • 2.索引(重点)
        • 一、索引概述
          • 优缺点
        • 二、索引结构
          • 支持情况
          • 二叉树
          • B-Tree
          • B+Tree
        • Hash索引
          • 面试题 为什么InnoDB存储索引选择B+Tree索引结构
        • 三、索引分类
          • 回表查询
          • 思考
        • 四、索引语法

    一、索引概述

    索引(index)是帮助MySQL高效获取数据的数据结构(有序)
    
    • 1

    在这里插入图片描述

    优缺点

    优点缺点
    提高数据检索的效率索引列也是占用空间的
    通过索引对数据进行排序,降低数据排序的成本增删改效率低,查询效率高

    二、索引结构

    • B+Tree
    • hash

    MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的结构

    默认就是B+Tree索引

    在这里插入图片描述

    支持情况

    在这里插入图片描述

    二叉树

    在这里插入图片描述

    B-Tree

    在这里插入图片描述

    B+Tree

    在这里插入图片描述

    MySQL中的B+Tree

    在这里插入图片描述

    Hash索引

    在这里插入图片描述

    Hash索引特点

    只能用于对等比较(=,in) 不支持范围查询
    无法利用索引完成排序操作
    查询效率高,通常只要一次检索就可以了,一般高于B+Tree索引
    
    
    存储引擎支持
    Memory,但InnoDB中具有自适应hash功能,hash索引是存储引擎根据B+Tree索引在指定条件下自动构建的
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    面试题 为什么InnoDB存储索引选择B+Tree索引结构

    在这里插入图片描述

    三、索引分类

    在这里插入图片描述

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

    分类含义特点
    聚集索引将数据存储与索引放到了一起,叶子结点保存了行数据必须有,且只有一个
    二级索引将数据与索引分开存储,叶子节点保存的是对应的id主键可以存在多个

    聚集索引选取股则

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

    在这里插入图片描述

    回表查询

    二级索引查完了,带着主键id查聚集索引,这个现象称为回标查询

    在这里插入图片描述

    思考

    在这里插入图片描述

    四、索引语法

    -- 创建索引
    --1.name字段为姓名字段,可能会重复 ,为该字段创建索引
    create index idx_user_name on tb_user(name);
    --2.phone手机号,非空唯一,为该字段创建个唯一索引
    create unique index idx_user_phone on tb_user(phone);
    --3.为profession gae status创建联合索引
    create index idx_user_pro_age_sta on tb_user(profession,gae,status);
    --4.为email创建一个合适的索引
    create index idx_user_email on tb_user(email);
    --查看索引
    show index from table_name;
    --删除索引
    drop index 索引名称 on table_name;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

  • 相关阅读:
    深眸科技基于AI机器视觉实现应用部署,构建铝箔异物检测解决方案
    JS的Promise语法使微信小程序异步操作同步化(让云数据库先查完再执行下面逻辑代码)
    Scala基础【异常、隐式转换、泛型】
    [ByteCover2]-音频翻唱检索论文笔记
    百度移动权重查询易语言代码
    element源码(五)radio 单选框组件
    javaweb:mybatis:mapper(sql映射+代理开发+配置文件之设置别名、多环境配置、顺序+注解开发)
    推荐几款最好用的MySQL开源客户端,建议收藏!
    蓝桥杯 (年号字串 C++)
    Java入门有多快,看这篇
  • 原文地址:https://blog.csdn.net/xixihaha_coder/article/details/126199849
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号