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

需要MySQL INSERT - SELECT查询具有数百万条记录的表

您好!您的问题是关于如何在MySQL中插入大量数据。在这里,我将向您介绍一些关于MySQL INSERT - SELECT查询的方法,以便您能够处理数百万条记录的表。

首先,我们需要了解MySQL INSERT - SELECT查询的基本语法:

代码语言:txt
复制
INSERT INTO 目标表 (列1, 列2, 列3, ...)
SELECT 列1, 列2, 列3, ...
FROM 源表
WHERE 条件;

在这个查询中,我们从源表中选择数据,并将其插入到目标表中。您可以根据需要添加WHERE子句来过滤数据。

处理大量数据时,我们需要注意以下几点:

  1. 使用批量插入:为了提高插入速度,您可以一次插入多条记录。例如:
代码语言:txt
复制
INSERT INTO 目标表 (列1, 列2, 列3, ...)
SELECT 列1, 列2, 列3, ...
FROM 源表
WHERE 条件
LIMIT 1000;

这将一次插入1000条记录。您可以根据需要调整LIMIT的值。

  1. 关闭自动提交:在插入大量数据时,关闭自动提交可以提高性能。您可以使用以下命令关闭自动提交:
代码语言:txt
复制
SET autocommit=0;

完成插入操作后,请确保提交更改:

代码语言:txt
复制
COMMIT;
  1. 使用索引:为了提高查询速度,请在源表和目标表上创建适当的索引。这将帮助MySQL更快地查找和处理数据。
  2. 优化数据库配置:您可以通过调整数据库配置来提高性能。例如,您可以增加缓冲区、调整查询缓存大小等。
  3. 分批处理:如果您的表非常大,您可能需要将处理过程分批进行。例如,您可以将大表分成多个小表,并分批插入数据。

希望这些信息能够帮助您处理大量数据的插入操作。如果您有任何其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQLinsert into select 引发锁

上周五HaC我要上线,有一个脚本需要执行,执行前需要备份一个。 运维大佬:“这个备份为什么要这么久,,??” 1秒过去了……2秒过去了…… 期间运营反馈系统出现大量订单超时情况。...MySQL一般我们在生产上备份数据通常会用到 这两种方法: INSERT INTO SELECT CREATE TABLE AS SELECT 注:本文仅针对MySQL innodb引擎,事务是可重复读...`,`c` from t; -- 创建一个结构与t一模一样,复制结构同时也复制数据,但是指定新列名; 后面两种格式,如果后面跟上合适查询条件,可以只复制符合条件数据到新中。...(即复制表索引会消失) 3 .区别 首先,最大区别是二者属于不同类型语句,INSERT INTO SELECT 是DML语句(数据操作语言,SQL中处理数据等操作统称为数据操纵语言),完成后需要提交才能生效...定时任务,任务逻辑是查询100条记录,然后多个线程分到几个任务执行,比如是个线程,每个线程10条记录,插入后,在查询100条记录处理。

2K10

MySQLinsert into select 引发锁

MySQL一般我们在生产上备份数据通常会用到 这两种方法: INSERT INTO SELECT CREATE TABLE AS SELECT 注:本文仅针对MySQL innodb引擎,事务是可重复读...`,`c` from t; -- 创建一个结构与t一模一样,复制结构同时也复制数据,但是指定新列名; 后面两种格式,如果后面跟上合适查询条件,可以只复制符合条件数据到新中。...因此从MySQL5.5版本开始引入了MDL锁,来保护元数据信息,用于解决或者保证DDL操作与DML操作之间一致性。 注意: 新不会自动创建创建和原表相同索引。...(即复制表索引会消失) 3 .区别 首先,最大区别是二者属于不同类型语句,INSERT INTO SELECT 是DML语句(数据操作语言,SQL中处理数据等操作统称为数据操纵语言),完成后需要提交才能生效...定时任务,任务逻辑是查询100条记录,然后多个线程分到几个任务执行,比如是个线程,每个线程10条记录,插入后,在查询100条记录处理。

6.4K31
  • INSERT...SELECT语句对查询加锁吗

    前言: insert into t2 select * from t1; 这条语句会对查询 t1 加锁吗?不要轻易下结论。...selectt1上每条记录及最大伪记录supremum pseudo-record都加了S锁,这个S锁是nextkey lock锁,当connection2试图向t1中插入一条中不存在数据时也会被阻塞...,connect1S锁与connect2需要 X,GAP,INSERT_INTENTION锁不兼容。...SELECT 执行期间,另一个事务修改了被查询数据,那么 INSERT ... SELECT 可能会读取到不同数据,导致插入数据不一致。...结论: INSERT...SELECT语句是否对查询加锁跟事务隔离级别有关,REPEATABLE-READ隔离级别下加共享读锁,此共享读锁属于Nextkey lock,会影响其他事务对查询DML操作

    6910

    MySQL(九)之数据查询详解(SELECT语法)二

    上一篇讲了比较简单查询以及MySQL组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等。希望大家能都得到帮助!...分析:把book分开看成是两张完全一样,在b1中找到b_id='g2's_id,然后到b2这张中去查找和该s_id相等记录,也就查询出来了问题所需要结果。           ...这就是左外连接意思,将左边所有记录都显示出来(前提是按照我们所需要字段,           也就是SELECT 后面所选择字段)。...利用UNION关键字,可以将查询结果合并到一张结果集中,也就是通过UNION关键字将多条SELECT语句连接起来,注意,合并结果集,只是增加了记录,并不是将字段增加,仅仅是将记录行合并到一起...注意:唯一差别就在正则表达式不一样,一般使用这种模糊查询,使用MySQL'_'和'%'就已经足够了。   2)查询以特定字符或字符串结尾记录   3)用符号"."

    1.9K100

    MySQL(九)之数据查询详解(SELECT语法)一

    这一篇是MySQL重点也是相对于MySQL中比较难得地方,个人觉得要好好去归类,并多去练一下题目。MySQL查询也是在笔试中必有的题目。希望我这篇博客能帮助到大家! 重感冒下我,很难受!...二、单查询   单查询主要操作有:查询所有字段、查询指定字段、查询指定记录、带IN关键字查询、带BETWEEN AND 范围查询、带LIKE字符匹配查询查询空值                 ...SELECT * FROM 名 WHERE 字段名 IS NULL;  //查询字段名是NULL记录         SELECT * FROM 名 WHERE 字段名 IS NOT NULL;  ...三、组函数(集合函数)查询   MySQL中组函数有COUNT()函数、SUM()函数、AVG()函数、MAX()函数、MIN()函数   3.1、COUNT()     COUNT(*):计算行数...例如:查看一下book记录数 ? 没有空值,所以计算出来行数和总记录行数是一样

    3.2K110

    Node.js一次处理10万条数据

    我有幸开发了一个需要处理海量电话号码系统,这个系统功能包括: 一次导入10万条Excel数据 对数据进行筛选去重写入数据库 可对复杂查询条件筛选出数据 导出数据到Excel表格 根据条件修改数据字段...下面我们就介绍一下如何一次性处理10万条数据,写入MySQL。...写入数据库 对于10万条数据来说,如果用普通insert语句处理,那么处理时间会非常长。这对于客户来说是不能接受。Oracle有批量insert,但MySQL却没有。...首先,我们需要找到重复手机号码,并写入一个临时insert into repetition select a.phone from ${table_source} a ,resource b where...然后我们通过insert语句加上子查询来插入去重后数据到真实中。

    1.1K20

    MySQL去重操作优化到极致之三弹连发(一):巧用索引与变量

    元旦假期收到阿里吴老师来电,被告知已将MySQL查重SQL优化到极致:100万原始数据,其中50万重复,把去重后50万数据写入目标需要9秒钟。...这是一个惊人数字,要知道仅是insert 50万条记录需要些时间。于是来了兴趣,自己实验、思考、总结做了一遍。...insert into t_source select * from t_source where item_id=1; commit;         查询记录数和去重后记录数图一所示...图六         和没有索引相比,子查询虽然从全扫描变为了全索引扫描,但还是需要扫描100万行记录。因此查询性能提升36%,并不是很多。 4....图七         该语句具有以下特点。 (1)消除了嵌套子查询,只需要对t_source进行一次全索引扫描,查询计划已达最优。 (2)无需distinct二次查重。

    5.3K80

    Mysql数据库学习(三):crud操作、完整性约束、select各种查询

    mysql -uxxx -pxxx  scott < scott.sql 1.select查询select empno,ename,job from emp; select * from emp...返回到结果集合中数据行数等于第一个中符合查询条件数据行数乘以第二个中符合查询条件数据行数。... 内连接(自身连接) 外连接(左连接):返回包括左所有记录和右中联结字段相等记录;即左外连接就是在等值连接基础上加上主表中未匹配数据(被连接 表字段为 NULL)。...外连接(右连接):返回包括右所有记录和左中联结字段相等记录;即右外连接是在等值连接基础上加上被连接不匹配数据(连接表字段为 NULL)。...外连接(全连接):全外连接是在等值连接基础上将左和右未匹配数据都加上。mysql 不支持 full outer join。

    3.7K00

    MySQL常用命令-增删改查

    MySQL常用命令 指令作用 指令 查看/查询 show,select,desc 创建 create 删除 drop,delete,truncate 切换/进入 use 添加记录 insert 查看数据库列表...show databases; 查看当前数据库登入是那个用户 select user(); 查看当前数据库有哪些 show tables; 查看test数据库编码类型 show create database...NOT NULL PRIMARY KEY,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED); 为emp添加记录(有 id,name,sex,age字段) insert...; 删除emp整个表记录 delete from emp; 备注:这个命令要是删除上万条记录很慢(因为他记录日志,可以利用日志还原) truncate table emp;这个命令删除上万条记录特别快...因为他不记录日志 清空emp truncate table emp; 批量执行sql程序 mysql < hellodb_innodb.sql 备注:也可不进入数据库情况下查看数据库 mysql -

    88300

    Mysql面试题及千万级数据查询优化

    Mysql数据库中一个表里有一千多万条数据,怎么快速查出第900万条100条数据? 怎么查,谁能告诉我答案?...首先,我演示下大数据分页查询,我test表里有1000多万条数据,然后使用limit进行分页测试: select * from test limit 0,100; 耗时:0.005s select *...这也让我们得出一个结论: 1,limit语句查询时间与起始记录位置成正比。 2,mysqllimit语句是很方便,但是对记录很多并不适合直接使用。...4,InnoDB不保存具体行数,执行select count(*) from table时需要扫描。而MyISAM用一个变量保存了整个行数,执行上述语句时只需要读出该变量即可,速度很快。...4,尽量使用limit进行分页批量查询,不要一次全部获取。 5,绝对避免select *使用,尽量select具体需要字段,减少不必要字段查询; 6,尽量将or 转换为 union all。

    1.1K10

    Mysql进阶优化篇02——索引失效10种情况及原理

    ; (5)调用存储过程 往class添加1万条数据 #执行存储过程,往class添加1万条数据 CALL insert_class(10000); 往stu添加50万条数据,这个时间会稍微有点长...#执行存储过程,往stu添加50万条数据 CALL insert_stu(100000,500000); 查询下数据是否插入成功。...但是上面的索引可能不生效哦,在数据量较大情况下,我们进行全值匹配SELECT *,优化器可能经过计算发现,我们使用索引查询所有的数据后,还需要对查找到数据进行回操作,性能还不如全扫描。...所以我们建议:让主键具有 AUTO_INCREMENT ,让存储引擎自己为生成主键,而不是我们手动插入 我们自定义主键列 id 拥有 AUTO_INCREMENT 属性,在插入记录时存储引擎会自动为我们填入自增主键值...这是因为or连接查询条件都需要查询,如果一个使用索引,一个不用索引全扫描,索引根本起不到优化性能作用。

    1K10

    Mysql面试题及千万级数据查询优化

    Mysql数据库中一个表里有一千多万条数据,怎么快速查出第900万条100条数据? 怎么查,谁能告诉我答案?...首先,我演示下大数据分页查询,我test表里有1000多万条数据,然后使用limit进行分页测试: select * from test limit 0,100; 耗时:0.005s select *...这也让我们得出一个结论: 1,limit语句查询时间与起始记录位置成正比。 2,mysqllimit语句是很方便,但是对记录很多并不适合直接使用。...4,InnoDB不保存具体行数,执行select count(*) from table时需要扫描。而MyISAM用一个变量保存了整个行数,执行上述语句时只需要读出该变量即可,速度很快。...4,尽量使用limit进行分页批量查询,不要一次全部获取。 5,绝对避免select *使用,尽量select具体需要字段,减少不必要字段查询; 6,尽量将or 转换为 union all。

    1.3K20

    mysql 优化海量数据插入和查询性能

    数据有序插入是指插入记录在主键上是有序排列,例如datetime是记录主键: INSERT INTO `insert_table` (`Id`, `Name`, `Value`) VALUES ('...我们可以参照innodb使用B+tree索引,如果每次插入记录都在索引最 后面,索引定位效率很高,并且对索引调整较小;如果插入记录在索引中间,需要B+tree进行分裂合并等处理,会消耗比较多计算资源...mysql数据库查询优化方法 1.对查询进行优化,应尽量避免全扫描,首先应考虑在 where 及 order by 涉及列上建立索引。...12.不要写一些没有意义查询,如需要生成一个空结构: Sql 代码 : select col1,col2 into #t from t where 1=0; 这类代码不会返回任何结果集,但是会消耗系统资源...15.索引并不是越多越好,索引固然可以提高相应 select 效率,但同时也降低了 insert 及 update 效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑

    4K20

    数据库概念相关

    允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行要快。 减少网络流量,例如一个需要数百SQL代码操作有一条执行语句完成,不需要在网络中发送数百行代码。...答:视图是一种虚拟,虚拟具有和物理表相同功能,可以对虚拟进行增该查操作,视图通常是一个或多个行或列子集,视图结果更容易理解(修改视图对基不影响),获取数据更容易(相比多表查询更方便),...怎么优化数据库(在数据百万条记录数据库中 Oracle)? 使用索引 建立分区,分区索引 使用存储过程 9. 如何优化SQL语句 ①....15.索引并不是越多越好,索引固然可以提高相应 select 效率,但同时也降低了 insert 及 update 效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑...举例来说,如果数据量积累到一定程度,比如一个银行账户数据库信息积累到上百万甚至上千万条记录,全扫描一次往往需要数十分钟,甚至数小时。

    1.7K110

    快速学习-Mycat分片join

    如图: LEFT JOIN 左连接从 A (左)产生一套完整记录,与匹配 B 表记录(右) .如果没有匹配,右侧将包含 null,在 Mysql 中等同于 left outer join...变动不频繁 数据量总体变化不大 数据规模不大,很少有超过数十万条记录。...鉴于此,MyCAT 定义了一种特殊,称之为“全局”,全局具有以下特性: 全局插入、更新操作会实时在所有节点上执行,保持各个分片数据一致性 全局查询操作,只从一个节点获取 全局可以跟任何一个进行...配置 全局配置比较简单,不用写 Rule 规则,如下配置即可: 需要注意是,全局每个分片节点上都要有运行创建 DDL 语句。...()); DirectDBJoinHandler 类是一个回调类,负责处理 SQL 执行过程中返回数据包,这里这个类,主要目的是用 a 返回 ID 信息,去 b 查询对于记录,做实时关联

    47730

    数据库简述

    5.结构化查询语句SQL SQL语言功能包括查询、操纵、定义和控制,是一个综合、通用关系数据库语言,同时又是一种高度非过程化语言,只要求用户指出做什么而不需要指出怎么做。...RDBMS专业术语 具有固定列数和任意行数 数据库:数据库是一些关联集合 列:一个数据项 Field 字段 行:一条记录 row 主键:主键是唯一。一个数据中只能包含一个主键。...MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 Mysql是开源,所以你不需要支付额外费用。...Mysql支持大型数据库。可以处理拥有上千万条记录大型数据库。 MySQL使用标准SQL数据语言形式。 Mysql可以允许于多个系统上,并且支持多种语言。...存储引擎分类 MYISAM 它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECTINSERT为主应用基本都可以使用这个引擎来创建

    50120

    MyCAT全局描述及示例

    “标签关系”图: image.png 1、全局描述 在分片情况下,当业务因为规模而进行分片以后,业务与这些附属字典之间关联,就成了比较棘手问题,考虑到字典具有以下几个特性:...• 变动不频繁 • 数据量总体变化不大 • 数据规模不大,很少有超过数十万条记录。...鉴于此,MyCAT 定义了一种特殊,称之为“全局”,全局具有以下特性: • 全局插入、更新操作会实时在所有节点上执行,保持各个分片数据一致性 • 全局查询操作,只从一个节点获取...="dn1,dn2" /> 需要注意是,全局每个分片节点上都会运行创建 DDL 语句。...可以看到当前执行计划中查询来自分片节点dn1 mysql:8066>explain select * from company; +-----------+---------------------

    1.3K10

    【黄啊码】MySQL中NULL和““区别以及对索引影响

    (id,col_a,col_b) values(3,null,''); insert test_ab(id,col_a,col_b) values(4,null,1); mysql> select *...(3)可为NULL列会使用更多存储空间,在Mysql中也需要特殊处理。...(4)当可为NULL列被索引时,每个索引记录需要一个额外字节,在MyISAM里甚至还可能导致固定大小索引(例如只有一个整数列索引)变成可变大小索引。...2.不适合键值较少列(重复数据较多列) 假如索引列TYPE有5个键值,如果有1万条数据,那么 WHERE TYPE = 1将访问2000个数据块。...主要提供2种方式索引:B-Tree索引,Hash索引 B树索引具有范围查找和前缀查找能力,对于有N节点B树,检索一条记录复杂度为O(LogN)。

    1K20

    Greenplum 简单性能测试与分析

    数据库模型包括CUSTOMER、LINEITEM、NATION、ORDERS、PART、PARTSUPP、REGION和SUPPLIER 8张数据,涉及22条复杂select查询流语句和2条带有insert...从以上执行过程可以看出,主要耗时点应该在sort操作上,Greenplum是在所有segment上同时进行一次8万条记录sort,而MySQL则是直接进行一次320万记录sort。...[image.png] 图6 Greenplum执行explain Q17结果 [image.png] 图7 MySQL执行explain Q17结果 子查询sql(select l_partkey...为了所有segment可以并行做join,会将lineitem数据做一次重分布(5万条记录),每个segment得到是hash分布到自身记录。...然后,子查询结果会与现做join操作,我们来继续看下两者在join上区别: MySQL:把子查询结果作为临时(20万条记录)与现lineitem(600万条记录)直接做了join,将产生600万

    4.7K120
    领券