mysql高级教程

2023-10-27

mysql高级教程

1.索引相关

1.创建索引

-- 创建索引
ALTER TABLE `test`.`test` 
ADD INDEX `myindex`(`name`) USING BTREE;
CREATE INDEX myindex ON test(`name`);
-- 查看索引
SHOW INDEX FROM test;
-- 删除索引
ALTER TABLE `test`.`test` 
DROP INDEX `myindex`;

DROP INDEX myindex on test;

2.sql分析explan

  • key不为空时,是索引名称时,代表走了做引;如果key为空代表没有走索引
EXPLAIN SELECT * from test WHERE `name`='test'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OzjXmnjd-1677651926633)(C:\Users\LiBo\AppData\Roaming\Typora\typora-user-images\image-20221226153105574.png)]

3.索引失效情况

  • 计算、函数、类型转换(自动或手动)导致索引失效
  • 范围条件右边的列索引失效

应用开发中范围查询,例如:金额查询,日期查询往往都是范围查询。应将查询条件放置 WHERE 语句最后。(创建的联合索引中,务必把范围涉及到的字段写在最后

  • 不等于( != 或者 <> )索引失效
  • is null 可以使用索引,is not null 无法使用索引
  • like 以通配符 % 开头索引失效
  • OR 前后存在非索引的列,索引失效

4.查询正在执行的sql(慢查询)

select * from information_schema.`PROCESSLIST` where info is not null;  

show full processlist;

2.事物相关

-- 开启事物
START TRANSACTION;
-- 插入数据
INSERT INTO test(id,name) VALUES (3,'test2');

-- 查询数据
SELECT * FROM test;
-- 回滚事物
ROLLBACK;
-- 提交事物
COMMIT;

-- 查询事物隔离级别
show variables like 'transaction_isolation';
show variables like 'tx_isolation';

2.1 事务的四大特性(ACID):

  1. 原子性(Atomicity):事物是最小单位,不可再分;
  2. 一致性(Consistency):事物要求所有的DML语句操作的时候,必须保证同时成功或者同事失败;
  3. 隔离性(Isolation):同一时间,只允许一个事物请求同一数据,不同的事物之间 彼此没有任何干扰;
  4. 持久性(Durability):是事物的保证,事物终结的标志(内存的数据持久到硬盘文件当中)

2.2事物的隔离级别:

  • 读未提交(Read uncommitted)设置隔离级别set session transaction isolation level read uncommitted;
  • 读已提交(Read committed)设置隔离级别set session transaction isolation level read committed;
  • 可重复读(Repeatable read)(mysql默认事物隔离级别)设置隔离级别set session transaction isolation level repeatable read;
  • 串行化(Serializable )设置隔离级别set session transaction isolation level serializable;

    set session transaction isolation level ***;只对当前会话生效

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4uma04lU-1677651926634)(C:\Users\LiBo\AppData\Roaming\Typora\typora-user-images\image-20221226161433771.png)]

3.Mysql 子查询提高Limit查询效率

SELECT * FROM t_test WHERE age = 100 LIMIT 1000000, 10
SELECT * FROM `t_test` a INNER JOIN (SELECT id FROM t_test WHERE age = 100 LIMIT 1000000, 10) b on a.id = b.id; 

img

img

4. distinct 和 group by 哪个效率更高

  • 在语义相同,有索引的情况下: group bydistinct 都能使用索引,效率相同。因为group bydistinct近乎等价,distinct 可以被看做是特殊的group by
  • 在语义相同,无索引的情况下: distinct效率高于group by。原因是distinctgroup by都会进行分组操作,但group by在 MySQL8.0 之前会进行隐式排序,导致触发 filesort,sql 执行效率低下。但从 MySQL8.0 开始,MySQL 就删除了隐式排序,所以,此时在语义相同,无索引的情况下,group bydistinct的执行效率也是近乎等价的。

相比于distinct来说,group by的语义明确。且由于 distinct 关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,或通过聚合函数对数据进行运算。

stinct 关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,或通过聚合函数对数据进行运算。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql高级教程 的相关文章

随机推荐

  • 【力扣】第302场周赛记录

    第302场周赛记录 6120 数组能形成多少数对 6164 数位和相等数对的最大和 6121 裁剪数字后查询第 K 小的数字 6122 使数组可以被整除的最少删除次数 6120 数组能形成多少数对 链接 数组能形成多少数对 描述 给你一个下
  • 深度学习常用激活函数

    神经网络构架过程中常用的激活函数表达式 函数图像和优缺点 激活函数决定输入信号是否或多大程度上应该通过节点 或神经元 传递到下一层 众所周知 神经网络的运算是线性的 引入非线性的激活函数 可以提高神经网络的拟合能力 下面讲解释一些常见的激活
  • spring源码中,委托模式的个人小感受

    文章目录 委托模式代码 代码感受 spring 源码中的应用 委托模式代码 注 不属于 23 种设计模式之一 是面向对象设计模式中常用的一种模式 public interface Cook void cook public class 川菜
  • 重新思考语义分割范式:SETR

    点击上方 CVer 选择加 星标 置顶 重磅干货 第一时间送达 本文作者 湃森 来源 知乎 已授权 https zhuanlan zhihu com p 348418189 一 论文信息 标题 Rethinking Semantic Seg
  • 热修复框架研究之Robust原理

    热修复框架研究之Robust原理 2017 03 28 15 23 出处 清屏网 人气 127 评论 0 热修复框架研究之Robust原理 作者 Houskii 这是群里重邮的子沛同学的投稿哦 Robust是美团点评团队在2017年3月开源
  • 【SQL注入】数字型注入 & 字符型注入

    目录 一 简介 概述 示例 数据库中区别 二 数字型注入 简介 判断 三 字符型注入 需闭合 简介 判断 一 简介 概述 一般会对数据的类型会有一个限制 不管怎么去区分 常用的数据类型有数值和字符型 通常SQL 注入漏洞分类 按照数据类型
  • 渗透实验 - 并查集

    渗透实验 给定黑格数量 黑格随机分布 生成一个矩阵 黑格子表示不通 白格表示通 循环很多次 求在当前黑格数量下 从上到下矩阵通的概率 Eg 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0
  • 在winds11系统中安装Java

    一 前言 如果你想要开发Java程序 你需要安装Java开发工具包 JDK 并配置JDK的环境变量 在本篇博客中 我将介绍如何在Winds11系统中安装JDK和配置JDK的环境变量 二 安装JDK 1 首先 访问Java官方网站 搜索Ora
  • 阿里Java代码规范 P3C插件

    1 阿里开发手册 1 1 说明 2017年年初 首次公开的阿里官方Java代码规范标准手册可以说是引起了全民 IT界 代码规范的热潮 相信这个手册很多行业内的朋友都比较熟悉 毕竟有 大厂光环 想低调都难 这个手册的主旨是 码出高效 码出质量
  • Linux 文件操作

    文章目录 一 task struct 和 file 的关系 二 文件操作的系统调用 三 进程默认打开的三个文件 四 文件重定向 五 Linux 下一切皆文件 六 缓冲区 文件是在磁盘上创建出来的 当我们想进行文件操作时 根据冯诺依曼体系结构
  • 【自学】记录Centos遇到的坑-网络连接失败

    Failed to start LSB Bring up down networking 问题 一 执行 service network restart 出现以下错误 Restarting network via systemctl Job
  • 蚂蚁算法matlab,蚁群算法(ACA)及其Matlab实现

    1基本原理 本质上也是一种概率算法 通过大概率收敛到最佳值 和其他的智能算法很相似 蚁群分泌的信息素存在正反馈 使得较佳的解 具有大概率被选到 当全局都选用较佳的解 变可以得到整体的最优解 2几个关键点 1 概率选择 受信息素浓度和启发函数
  • NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低

    vs2019解决 NETSDK1045 错误 一 平台描述 二 问题描述 三 问题原因 四 解决办法 一 平台描述 系统 Windows 10 VS Visual Stdio 2019 二 问题描述 我在下载了 微软官网 的WPF示例代码运
  • matlab求分量平方和,Matlab经典复习试题

    A 是三条边构成三角形的条件 B 是三条边不构成三角形的条件 C 构成三角形时逻辑值为真 D 不构成三角形时逻辑值为假 二 程序阅读理解 1 数学实验程序如下 syms x f 3 x 2 6 x 1 g x 2 x 3 R f g ezp
  • STM32-内存管理实验

    一 内存管理简介 1 如何在LCD上实现SD卡文件浏览 需要读取所有文件名到内存 然后显示到LCD 一般的方法是定义一个数组来存储所有文件名 1 需要知道最大文件名的长度 比如255字节 2 需要知道文件的个数 如果没有内存管理 则需要定义
  • 差分进化算法(Differential Evolution,DE)实例详解

    差分进化算法是 differential evolution DE 是基于群体智能理论的优化算法 是通过群体内个体间的合作与竞争而产生的智能优化搜索算法 对比进化计算 它保留了基于种群的全局搜索策略 采用实数编码 基于差分的简单变异操作和
  • SAP PO上传异步接口(PO从对方中间表读取数据)

    导语 最近的项目上出现了一个奇奇怪怪的需求 上传接口居然不是外围系统给我传输 而是他数据丢到他的中间表 然后PO去取过来 真就他不动 我自己动 下面说一下需要怎么来实现吧 其实跟PO下传接口写入中间表一样 只不过方向变了 还有一些小变动 这
  • HBASE列族不能太多的真相 (一个table有几个列族就有几个 Store)

    HRegionServer内部管理了一系列HRegion对象 每个HRegion对 应了table中的一个region HRegion中由多 个HStore组成 每个HStore对应了Table中的一个column family的存储 可以
  • Mac 快速打开终端快捷键

    Mac下没有打开终端的快捷键 需要自己设置 主要是利用Mac的Automator来创建打开终端的服务 并设置快捷键 直接看图说话 找到Automator 创建打开终端的服务 编写打开终端的命令 其中的 Terminal 改成其他的应用名就能
  • mysql高级教程

    mysql高级教程 1 索引相关 1 创建索引 创建索引 ALTER TABLE test test ADD INDEX myindex name USING BTREE CREATE INDEX myindex ON test name