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

【第31天】SQL进阶-写优化- 插入优化(SQL 小虚竹)

回城传送–》《31天SQL筑基》

文章目录

  • 零、前言
  • 一、练习题目
  • 二、SQL思路:SQL进阶-写优化-插入优化
    • 解法
      • 插入优化
        • 禁用索引
          • 语法如下
          • 适用数据库引擎
            • 非空表:禁用索引
        • 禁用唯一性检查
          • 语法如下
          • 适用数据库引擎
        • 禁用外键检查
          • 语法如下
          • 适用数据库引擎
        • 批量插入数据
          • 语法如下
          • 适用数据库引擎
        • 批量导入数据
          • 语法如下
          • 适用数据库引擎
        • 禁用事务自动提交
          • 语法如下
          • 适用数据库引擎
  • 三、总结
  • 四、参考

零、前言

今天是学习 SQL 打卡的第 31 天,每天我会提供一篇文章供群成员阅读( 不需要订阅付钱 )。

希望大家先自己思考,如果实在没有想法,再看下面的解题思路,自己再实现一遍。在小虚竹JAVA社区 中对应的 【打卡贴】打卡,今天的任务就算完成了,养成每天学习打卡的好习惯。

​ 虚竹哥会组织大家一起学习同一篇文章,所以有什么问题都可以在群里问,群里的小伙伴可以迅速地帮到你,一个人可以走得很快,一群人可以走得很远,有一起学习交流的战友,是多么幸运的事情。

​ 我的学习策略很简单,题海策略+ 费曼学习法。如果能把这些题都认认真真自己实现一遍,那意味着 SQL 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。

今天的学习内容是:SQL进阶-写优化- 插入优化

一、练习题目

题目链接难度
SQL进阶-写优化- 插入优化★★★☆☆

二、SQL思路:SQL进阶-写优化-插入优化

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

解法

要求处理:

  • 从四个选项中选择一个正确答案

插入优化

往表中插入数据时,会受索引,唯一性校验,外键检查和事务自动提交等原因会影响插入的效率。以下会分别介绍各种优化的方式。

禁用索引

在(非空表)插入大量数据时,可以先禁用索引,等数据插入完成,再启用索引。达到提高插入性能。
注:对于非空表插入记录时,MySQL会根据表的索引对插入记录建立索引。空表插入禁用是没有效果的

语法如下
#禁用索引
ALTER TABLE 表名 DISABLE KEYS;
#开启索引
ALTER TABLE 表名 ENABLE KEYS;
适用数据库引擎

MyISAM

非空表:禁用索引

–先清空student表数据

truncate student_my_isam ;

调用存储过程,先创建1万条数据。


CALL add_student_disable_index(10000) ;

在这里插入图片描述

禁用索引

ALTER TABLE student_my_isam DISABLE KEYS;

再调用存储过程,创建数据。


CALL add_student_disable_index(10000) ;

在这里插入图片描述
启用索引

ALTER TABLE student_my_isam ENABLE KEYS;

禁用唯一性检查

在插入大量数据时,可以先禁用唯一性检查,等数据插入完成,再启用唯一性检查。达到提高插入性能。

语法如下
#禁用唯一性检查
SET UNIQUE_CHECKS = 0;
#开启唯一性检查
SET UNIQUE_CHECKS = 1;
适用数据库引擎

MyISAM和InnoDB

禁用外键检查

在插入大量数据时,可以先禁用外键检查,等数据插入完成,再启用外键检查。达到提高插入性能。

语法如下
#禁用外键检查
SET foreign_key_checks = 0;
#开启外键检查
SET foreign_key_checks = 1;
适用数据库引擎

MyISAM和InnoDB

批量插入数据

向数据表中插入多条数据时,一次性插入多条比每次插入一条的性能要高出很多。

语法如下
INSERT INTO table_name (column1,column2,column3,) 
VALUES (value1,value2,value3,),(value4,value5,value6,);
适用数据库引擎

MyISAM和InnoDB

批量导入数据

使用LOAD DATA INFILE导入数据比用INSERT插入数据的性能高。

语法如下
LOAD DATA INFILE ‘data_file_path’ INTO TABLE table_name;

说明:

  • data_file_path表示数据文件在服务器磁盘的绝对路径;
  • table_name表示数据表的名称

在使用LOAD DATA INFILE语句向InnoDB数据表批量导入数据时,被导入的文件中的数据记录最好是按照主键顺序排列的,这样可以提高导入数据的效率。

适用数据库引擎

MyISAM和InnoDB

禁用事务自动提交

InnoDB数据库引擎是支持事务的,可以先禁用事务自动提交,等数据插入完成,再启用事务自动提交。达到提高插入性能。

语法如下
#禁用事务自动提交
SET autocommit = 0;
#开启事务自动提交
SET autocommit = 1;
适用数据库引擎

InnoDB

三、总结

对于MylSAM引擎的表,常见的插入优化方法如下:

  • 禁用索引:对于非空表,插入记录时,MySQL会根据表的索引对插入的记录建立索引.如果插入大量数据,建立索引会降低插入记录的速度.为了解决这种情况可以在插入记录之前禁用索引,数据插入完毕后再开启索引。

对于空表批量导入数据,则不需要进行此操作,因为MylSAM引擎的表是在导入数据之后才建立索引的。

  • 禁用唯一性检查:插入数据时,MySQL会对插入的记录进行唯一性校验.这种唯一性校验也会降低插入记录的速度.为了降低这种情况对查询速度的影响,可以在插入记录之前禁用唯一性检查,等到记录插入完毕后再开启。
  • 批量插入数据:向数据表中插入多条数据时,一次性插入多条比每次插入一条的性能要高出很多。
  • 批量导入数据:使用LOAD DATA INFILE导入数据比用INSERT插入数据的性能高。

对于InnoDB引擎的表,常见的插入优化方法如下:

  • 禁用唯一性检查:插入数据时,MySQL会对插入的记录进行唯一性校验.这种唯一性校验也会降低插入记录的速度.为了降低这种情况对查询速度的影响,可以在插入记录之前禁用唯一性检查,等到记录插入完毕后再开启。
  • 禁用外键检查:插入数据之前执行禁止对外键的检查,数据插入完成之后再恢复对外键的检查。
  • 禁止事务自动提交:InnoDB数据库引擎是支持事务的,可以先禁用事务自动提交,等数据插入完成,再启用事务自动提交。达到提高插入性能。

所以,嗯,这题的答案选。。评论区大声告诉虚竹哥。

四、参考

MySQL进阶技能树–>写优化–>插入优化
SQL快速入门-了解MySQL存储引擎(SQL 小虚竹)

我是虚竹哥,我们明天见~

相关文章:

【第31天】SQL进阶-写优化- 插入优化(SQL 小虚竹)

回城传送–》《31天SQL筑基》 文章目录零、前言一、练习题目二、SQL思路:SQL进阶-写优化-插入优化解法插入优化禁用索引语法如下适用数据库引擎非空表:禁用索引禁用唯一性检查语法如下适用数据库引擎禁用外键检查语法如下适用数据库引擎批量插入数据语法…...

SpringBoot自动装配的原理

前言 在开发SpringBoot项目时,当我们引入spring-boot-starter-xxx依赖后,想要使用依赖中的bean,直接就用Autowired拿来用了,不需要用xml或者注解的方式把它先注入到Spring容器中。这就是自动装配的特性,本文来讲述Spri…...

Vue3电商项目实战-分类模块5【12-二级类目-结果区-排序组件、13-二级类目-结果区-数据加载、14-二级类目-结果区-进行筛选】

文章目录12-二级类目-结果区-排序组件13-二级类目-结果区-数据加载14-二级类目-结果区-进行筛选12-二级类目-结果区-排序组件 目的:封装排序组件,完成排序切换效果 大致步骤: 定义一个组件 sub-sort,完成基础布局在 sub.vue 组件…...

计算机操作系统概述

文章目录1.0 操作系统概述1.1 操作系统的目标1.2 操作系统的功能1.3 操作系统结构1.4 操作系统接口1.5 操作系统的发展1.6 操作系统的特征2.0 进程管理2.1 进程调度2.2 进程调度算法2.3 进程间通信2.4 进程间的同步2.5 软件实现互斥的方法2.6 硬件实现互斥的方法2.7 信号2.8 管…...

面试官让你说说react状态管理?

hooks 为什么不能放在条件判断里 以 setState 为例,在 react 内部,每个组件(Fiber)的 hooks 都是以链表的形式存在 memoizeState 属性中 update 阶段,每次调用 setState,链表就会执行 next 向后移动一步。如果将 setState 写在条…...

CUDA线程块的分配

为了确保能够真正地了解线程块的分配,接下来我们写一个简短的内核程序来输出线程块、线程、线程束和线程全局标号到屏幕上。现在,除非你使用的是 3.2 版本以上的 SDK否则内核中是不支持 printf的。因此,我们可以将数据传送回 CPU 端然后输出到…...

史密斯圆图

在射频、微波中,常常使用史密斯圆图来做阻抗匹配。在不涉及复杂的数学推导,仍能把圆图用起来。 比如,共轭匹配。 RL1jX,需要找到-jX来抵消jX,消掉虚部之后,只留下实部,最终等效为RL‘1。 史密…...

Spring国际化实现

Java国际化 Java使用Unicode来处理所有字符。 Locales 国际化主要涉及的是数字、日期、金额等。 有若干个专门负责格式处理的类。为了对格式进行控制,可以使用Locale类。它描述了: 一种语言一个位置(通常包含)一段脚本(可选,自Java SE7开…...

10- 天猫用户复购预测 (机器学习集成算法) (项目十) *

项目难点 merchant: 商人重命名列名: user_log.rename(columns{seller_id:merchant_id}, inplaceTrue)数据类型转换: user_log[item_id] user_log[item_id].astype(int32)主要使用方法: xgboost, lightbm竞赛地址: 天猫复购预测之挑战Baseline_学习赛_天池大赛-阿里云天池…...

对于《MySQL 实战45讲》的理解

一.理论 一条SQL执行过程 连接器分析器优化器执行器 索引 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样 常见索引数据结构(每碰到一个新数据库,我们需要先关注它的数据模型,这样才能从理论上分析出这个数据库的适用场景) 哈希…...

XQuery 函数

XQuery 1.0、XPath 2.0 以及 XSLT 2.0 共享相同的函数库。 XQuery 函数 XQuery 含有超过 100 个内建的函数。这些函数可用于字符串值、数值、日期以及时间比较、节点和 QName 操作、序列操作、逻辑值等等。您也可在 XQuery 中定义自己的函数。 XQuery 内建函数 XQuery 函数命…...

Elasticsearch的安装及常用操作

文章目录一、Elasticsearch的介绍1、Elasticsearch索引2、Elasticsearch的介绍二、Elasticsearch的安装1、安装ES服务2、安装kibana3、Docker安装ES4、Docker安装Kibana三、ES的常用操作1、索引操作2、文档操作3、域的属性3.1 index3.2 type3.3 store总结一、Elasticsearch的介…...

网络安全应急响应服务方案怎么写?包含哪些阶段?一文带你了解!

文章目录一、服务范围及流程1.1 服务范围1.2 服务流程及内容二、准备阶段2.1 负责人准备内容2.2 技术人员准备内容(一)服务需求界定(二)主机和网络设备安全初始化快照和备份2.3市场人员准备内容(1)预防和预…...

11、事务原理和实战,MVCC

事务原理和实战 1. 认识事务2. 事务控制语句2.1 开启事务2.2 事务提交2.3 事务回滚3. 事务的实现方式3.1 原子性3.2 一致性3.3 隔离性3.3 持久性4purge thread线程5事务统计QPS与TPS5.1 QPS5.2 TPS6. 事务隔离级别6.1 隔离级别6.2 查看隔离级别6.3 设置隔离级别6.4 不同隔离级别…...

Robust Self-Augmentation for Named Entity Recognition with Meta Reweighting

摘要 近年来,自我增强成为在低资源场景下提升命名实体识别性能的研究热点。Token substitution and mixup (token替换和表征混合)是两种有效提升NER性能的自增强方法。明显,自增强方法得到的增强数据可能由潜在的噪声。先前的研究…...

Java基础-xml

1.xml 1.1概述 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为止&#…...

TCP的Nagle算法和delayed ack---延时发送和延时应答与稍带应答选项

本文目录提高TCP的网络利用率的二个思考解决方案:Nagle算法和delayed ack(延时发送和延时应答与稍带应答选项)Nagle算法和delayed ack算法同时启动可能会导致的问题提高TCP的网络利用率的二个思考 我们都知道,TCP是一个基于字节流…...

智能拣配单解决方案

电子货架标签系统(ESLs),是一种放置在货架上、可替代传统纸质价格标签的电子显示装置, 每一个电子货架标签通过有线或者无线网络与商场计算机数据库相连, 并将最新的商品价格通过电子货架标签上的屏显示出来。 电子…...

如何防御入侵服务器

根据中华人民共和国刑法: 第二百八十六条违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的&#xff…...

[软件工程导论(第六版)]第4章 形式化说明技术(课后习题详解)

文章目录1. 举例对比形式化方法和欠形式化方法的优缺点。2. 在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?3. 一个浮点二进制数的构成是:一个可选的符号(+或-)&…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...