当前位置: 首页 > news >正文

MySQL进阶篇1

一、存储引擎

1.1 MySQL体系结构

在这里插入图片描述
在这里插入图片描述

1.2 存储引擎简介

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。

在这里插入图片描述

1.3 存储引擎特点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 存储引擎选择

在这里插入图片描述

存储引擎没有好坏之分,只需要根据具体需求,选择合适的存储引擎即可。
MyISAM 于 MEMORY 两款引擎目前不常使用,它们拥有更好的替代者,如 mongodbredis

1.5 总结

在这里插入图片描述

二、索引

2.1 索引概述

在这里插入图片描述
在这里插入图片描述

2.2 索引结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思考题:为什么 InnoDB选择使用 B+Tree索引结构?

在这里插入图片描述

2.3 索引分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

回表查询:先走二级索引找到对应的主键值,再根据主键值到聚集索引中拿到对应行的数据

相关思考题:以下SQL,哪个效率更高?为什么?

在这里插入图片描述
在这里插入图片描述

2.4 索引语法

在这里插入图片描述

2.5 SQL性能分析

在这里插入图片描述

Linux系统下配置慢查询日志开启:

在这里插入图片描述
在这里插入图片描述

  • explain 执行计划
    在这里插入图片描述

type 是性能优化的关键,null 为最高性能,all为最低
但一般不会出现 null 结果的 type,除非不涉及任何一张表,只是简单的select,如:select ‘A’
all 的性能是最低的,因为它会全表扫描
index是指 用了索引,但也对索引进行了扫描,遍历了整个索引树,性能比 all 略高

在这里插入图片描述
在这里插入图片描述

  • 需要重点关注的字段:
    在这里插入图片描述
2.6 索引使用
  • 最左前缀法则
    在这里插入图片描述

  • 范围查询

    在业务范围允许的前提条件下,尽量使用 >=<=,这样联合索引才会全部生效。

    在这里插入图片描述

  • 索引列运算
    在这里插入图片描述

  • 字符串不加引号
    在这里插入图片描述

  • 模糊查询
    在这里插入图片描述

  • or 连接的条件
    在这里插入图片描述

  • 数据分布影响
    在这里插入图片描述

  • SQL提示

    use index:建议MySQL使用该索引
    ignore index :让MySQL忽略该索引
    force index:强制MySQL使用该索引

    在这里插入图片描述

  • 覆盖索引
    在这里插入图片描述

  • 思考题
    在这里插入图片描述

  • 前缀索引
    在这里插入图片描述
    在这里插入图片描述

  • 单列索引与联合索引
    在这里插入图片描述

2.7 索引设计原则

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习100问50:seq2seq的原理是什么
  • 分布式主键
  • kubeadm部署 Kubernetes(k8s) 高可用集群【V1.28 】
  • 解锁 Redis:探索连接策略、数据编码与性能秘诀
  • 华为AC旁挂二层组网配置详解:从DHCP部署到无线业务配置,完成网络搭建
  • Golang | Leetcode Golang题解之第388题文件的最长绝对路径
  • MySQL迁移到ClickHouse
  • 边缘计算与物联网中的深度学习应用
  • SSM框架整合指南
  • 云原生向量数据库 PieCloudVector 助力多模态大模型 AI 应用
  • 【ceph学习】ceph如何进行数据的读写(1)
  • 数据同步大冒险:PostgreSQL到MySQL的奇妙之旅
  • Java面试宝典-java基础08
  • 构建Spring Boot应用的微服务服务网格Istio集成
  • Java后端服务端渲染与客户端渲染:SSR与CSR的权衡
  • Django 博客开发教程 8 - 博客文章详情页
  • HTML中设置input等文本框为不可操作
  • HTTP那些事
  • KMP算法及优化
  • MobX
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Theano - 导数
  • Unix命令
  • 笨办法学C 练习34:动态数组
  • 从重复到重用
  • 搞机器学习要哪些技能
  • 前端攻城师
  • 软件开发学习的5大技巧,你知道吗?
  • 深度学习在携程攻略社区的应用
  • 时间复杂度与空间复杂度分析
  • 微服务核心架构梳理
  • elasticsearch-head插件安装
  • 我们雇佣了一只大猴子...
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​【已解决】npm install​卡主不动的情况
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #{}和${}的区别?
  • #include
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (C语言)fread与fwrite详解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计ssm电影分享网站
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转)3D模板阴影原理
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(六):替换字符串中匹配的子串