首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql中一条insert语句批量插入多条记录

这种方式只能够一次插入一条数据,要想插入多条数据,就得多次调用此sql语句,意味着多次与数据库建立连接。...但是这样一来,就会增加服务器负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、优化等操作。幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句插入多条记录。...一条INSERT语句插入批量数据写法: INSERT INTO [表名]([列名],[列名]) VALUES ([列值],[列值])), ([列值],[列值])), ([列值],[列值...])); 可以看到,和原来常规INSERT语句区别,仅仅是在VALUES 后面增加值排列,每条记录之间用英文输入法状态下逗号隔开,是不是so easy。...建议: 在程序中,插入批量数据时,最好使用这种通过一条INSERT语句来一次性插入方式。这样可以避免程序和数据库建立多次连接,从而增加服务器负荷。

4.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

一条SQL语句优化

今天同事反馈ETL数据抽取很慢,并且用DBLINK来做数据抽取,慢到什么程度呢?...大概要执行2~3小时,很久没搞过Oracle了,很多技能都已经生疏了,抱着试试完心态,决定帮这个忙;后来经过优化,运行速度到了2分钟级别,其实还有优化空间,算了,就这样吧。现在讲讲相关优化过程。...1、了解背景情况 让厂家找到相关语句,一看却是个UPDATE语句,再看SQL语法,是个带.表和不带.表,根本不是什么DBLINK,就是同一个数据库上不同用户而已。...既然慢,那就慢慢看语句吧,语句不复杂,就是从一张表根据条件更新到另一张表 UPDATE语句比较烦人,一般情况下我都会把语句改写成SELECT语句 2、查看执行计划 对改写后语句进行执行,并且查看执行计划...在WHERE条件中,发现用到了分区条件,和内层表三个索引列 4、进行优化 通过以上分析,可以知道在外层表上随便建一个索引,应该就会取得较好效果。

27210

一条 SQL 语句引发思考

他创建了一张数据库表,表里字段只有主键索引(id)和联合索引(a,b,c),然后他执行 select * from t where c = 0; 这条语句发现走是索引,他就感觉很困惑,困惑在于两点...第二点,在这个数据表加了非索引字段,执行同样查询语句后,怎么变成走是全表扫描呢? 我先跟大家解释下,什么是最左匹配原则?...为什么 select * from t where c = 0; 这条不符合联合索引最左匹配原则查询语句走了索引查询呢?...那么,如果写了个符合最左原则 select 语句,那么 type 就是 ref,这个效率就比 index 全扫描要高一些。 那为什么选择全扫描联合索引树,而不扫描全表(聚集索引树)呢?...为什么这个数据表加了非索引字段,执行同样查询语句后,怎么变成走是全表扫描呢?

33440

一条SQL语句是如何执行

一条SQL语句是如何执行? 首发于GitHub开源项目: Java超神之路 你好,我是杜少雄。 今天和大家聊一聊MySQL基础架构。我们经常说,看一个事千万不要直接陷入细节里。应该先鸟瞰全貌。...当一条SQL语句执行时候,我们看到是最后执行结果。却不知道这条语句在MySQL内部是如何执行。 总览 所以今天我们把MySQL拆解一下,看看里边有哪些零件。下边是MySQL基本架构示意图。...之前执行过语句及其结果可能会以 key-value 对形式,被直接缓存在内存中。key 是查询语句,value 是查询结果。...你输入是由多个字符串和空格组成一条 SQL 语句,MySQL 需要识别出里面的字符串分别是什么,代表什么。 MySQL 从你输入"select"这个关键字识别出来,这是一个查询语句。...如果你语句不对,就会收到“You have an error in your SQL syntax”错误提醒,比如下面这个语句 select 少打了开头字母“s”。 4.

1.1K50

一条 SQL 语句是如何执行

1. select 语句执行过程 一条 select 语句执行过程如上图所示 1、建立连接 连接器会校验你输入用户名和密码是否正确,如果错误会返回提示,如果正确,连接器会查询当前用户对于权限。...连接器作用就是校验用户权限 2、查询缓存 MySQL 中有个缓存概念,当你在执行一条 SQL 查询语句时,MySQL 会先去缓存中查看是否有对应记录,如果有,则直接返回,如果没有,则取数据库中查询...对于 select 语句而言,MySQL 拿到这条 SQL 语句后,识别出 select 关键词,知道这是一条查询语句,然后再取识别 from 以及表名,识别字段,这个步骤是词法分析。...词法分析完成后还需要进行语法分析,也就是判断这条语句语法是否正确,比如你 select 写成了 selct,那么语法分析就会检验出来 4、优化器 优化器职责是对 sql 语句进行优化,比如这条语句该用什么索引...2. update 语句执行过程 update 语句执行过程和 select 语句相同,也需要经过连接、分析器、优化器、执行器这些步骤。

62720

MySQL:一条SQL语句执行过程

一条select语句执行流程 第一步:连接器 连接器负责跟客户端建立连接、获取权限、维持和管理连接。如果用户名密码验证通过后,连接器会到权限表里面查出你拥有的权限。...之后该连接权限验证都依赖于刚查出来权限。 第二步:查询缓存 当获取连接后,一条SELECT语句会先去查询缓存,看之前是否执行过。如果获取到缓存后就执行返回,不然继续后面的步骤。...打开表时候,执行器就会根据表引擎定义,去使用这个引擎提供接口。 图片 一条update语句执行流程 update语句除了会执行上面的五步,还会涉及两个重要日志模块。...两个重要日志模块 redo log (重做日志) redo log 是innodb所特有的,当有一条更新语句时,innoDB引擎会先把记录写到redo log中,然后更新内存,这时候更新就算完成了。...binlog(归档日志) binlog属于server层日志,是逻辑日志,记录是这个语句原始逻辑,比如给“id =1 一行某个字段+2”。

18620

详解一条SQL语句执行过程

同时,SQL语句与数据在数据库上存储方式无关,只是不同数据库对于同一条SQL语句底层实现不同罢了,但结果相同。...1,一条查询sql语句先执行是 FROM student 负责把数据库表文件加载到内存中去,如图1.0中所示。...(2)当查询sql中有GROUP BY时,会对内存中若干临时表分别执行SELECT,而且只取各临时表中一条记录,然后再形成新临时表。...,而HAVING 是对SELECT 语句执行之后临时表中数据过滤,所以说column AS otherName ,otherName这样字段在WHERE后不能使用,但在HAVING 后可以使用。...但HAVING后使用字段只能是SELECT 后字段,SELECT后没有的字段HAVING之后不能使用。HAVING num >= 2语句执行之后生成一张临时表,如下: ?

55120

MySql批量插入语句(INSERT)

使用INSERT语句实现批量插入 前言 在初始化数据库或者导入一些数据时,常常会用到批量操作,如果在循环脚本中使用单条插入数据语句时,就意味着多次与数据库建立连接,这样会急剧消耗服务器性能。...那么,MySql是提供了批量插入语句,和单条插入语句类似。...单条插入语句写法 INSERT INTO [表名] ([列名],[列名]) VALUES([列值],[列值]); 批量插入语句写法 INSERT INTO [表名]([列名],[列名]) VALUES...([列值],[列值])), ([列值],[列值])), ([列值],[列值])); 由此看来两者很相似,批量插入语句则是在前者值后面继续添加新值,并用逗号分隔。...示例 下面创建一个名为‘bhl_tes’数据库,并创建名为‘test_user’表,字段分别为‘id’,‘age’,‘name’,’sex‘。

8K20

详解一条查询select语句和更新update语句执行流程

前面几篇MySQL系列文章介绍了索引,事务和锁相关知识,那么今天就让我们来看看当我们执行一条select语句一条update语句时候,MySQL要经过哪些步骤,才能返回我们想要数据。...一条select语句执行流程 MySQL从大方向来说,可以分为 Server 层和存储引擎层。...如下图所示(图片来源于《高性能MySQL》): 在这里插入图片描述 根据流程图,一条select查询大致经过以下六个步骤: 1、客户端发起一个请求时,首先会建立一个连接 2、服务端会检查缓存,如果命中则直接返回...所以说我们批量插入时候尽量拆分成多次插入而不要一次插入太大数据,同样查询语句最好也带上limit限制条数,避免一次返回过多数据。...一条update语句执行流程 一条更新语句,其实是增,删,查综合体,查询语句需要经过流程,更新语句全部需要执行一次,因为更新之前必须要先拿到(查询)需要更新数据。

2K20

一条SQL查询语句是如何执行

2.2.1 词法解析 以下面的SQL语句为例 SELECT * FROM t_user WHERE user_name = '蝉沐风' AND age > 3; 分析器先会做“词法分析”,就是把一条完整...SQL语句打碎成一个个单词,比如一条简单SQL语句,会打碎成8个符号,每个符号是什么类型,从哪里开始到哪里结束。...MySQL作者担心我们写SQL太垃圾,所以有设计出一个叫做查询优化器东东,辅助我们提高查询效率。 2.3.1 什么是查询优化器? 一条 SQL语句是不是只有一种执行方式?...或者说数据库最终执行 SQL是不是就是我们发送 SQL? 不是。一条 SQL 语句是可以有很多种执行方式,最终返回相同结果,他们是等价。...特点: 支持表级别的锁(插入和更新会锁表),不支持事务; 拥有较高插入(insert)和查询(select)速度; 存储了表行数(count速度更快)。 怎么快速向数据库插入100万条数据?

1.4K30

一条 SQL 查询语句是如何执行

一条 SQL 查询语句是如何执行?...比如,你有个最简单表,表里只有一个ID字段,在执行下面这个查询语句时 mysql> select from T where ID=10; 我们只看到一个输入语句,返回一个结果,却不知道这个 SQL 语句在...MySQL 拿到一个请求后,先查询缓存看看,看是不是之前执行过这条语句,之前执行过语句与结果,可能会以 key-value 形式,被直接缓存在内存中,key 是查询语句, value 是查询结果,...你输入是由多个字符串和空格组成一条SQL语句,MySQL需要识别出里面的字符串分别是什么,代表什么,MySQL从你输入" select"这个关键字识别出来,这是一个查询语句。...如果你语句不对,就会收到“ You have an eror in your SQL syntax'错误提醒,比如下面这个语句 select少打了开头字母“s”.

75710

一条sql查询语句是如何执行

本文通过一条sql语句来讲述mysql基础架构 select * from jiuxiao_admin_log where user_id =1000; ?...好了现在我们大致了解了mysql零件,那么现在我们将通过一条查询sql,从连接器到执行器来讲清楚每层作用。...而对于你确定要使用查询缓存语句,可以用SQL_CACHE显式指定,像下面这个语句一样 select SQL_CACHE * from T where ID=10; 分析器 如果没有命中查询缓存,就要开始真正执行语句了...首先,MySQL需要知道你要做什么,因此需要对SQL语句做解析。 MySQL从你输入"select"这个关键字识别出来,这是一个查询语句。...打开表时候,执行器就会根据表引擎定义,去使用这个引擎提供接口。 至此,这个语句就执行完成了。

1K20

一条更新语句是如何执行

一条更新语句是如何执行? 之前你可能经常听DBA同事说,MySQL可以恢复到半个月内任意一秒状态,惊叹同时,你是不是心中也会不免会好奇,这是怎样做到呢? 这个需要从一个表,一条更新语句说起。...执行语句前,需要连接器工作,在一个表上有更新时候,跟这个表有关缓存会失效,所以这条语句会把表 T 上所有缓存结果都清空,这也是为啥不推荐使用查询缓存原因。...分析器通过词法和语法分析这条更新语句,优化器决定要使用 ID 这个索引,然后执行器具体执行,找到这一条,然后更新。...MySQL 采用 WAL 技术,Write Ahead Loging,关键点是先写日志再写磁盘,具体执行如下:当有一条记录需要更新时候,InnoDB 引擎会先把记录写到 redo log里,并更新内存...但是由于 binlog 还没写完就 crash 了,这个时候 binlog 里面就没有记录这个语句,因此之后备份日志时候,存起来 binlog里面就没这条语句

50310
领券