如果您对哪个更快:多个单INSERT或一个多行INSERT?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于哪个更快:多个单INSERT或一个多行INSERT?的详细内容,我
如果您对哪个更快:多个单 INSERT 或一个多行 INSERT?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于哪个更快:多个单 INSERT 或一个多行 INSERT?的详细内容,我们还将为您解答多条insert怎么执行的相关问题,并且为您提供关于c – 使用back_inserter()或inserter()提高std :: copy()的效率、DB2sql——insert all与insert first用法讲解与实例、hive insert into语句 和 insert overwrite语句、Hive之insert和insert overwrite的有价值信息。
本文目录一览:- 哪个更快:多个单 INSERT 或一个多行 INSERT?(多条insert怎么执行)
- c – 使用back_inserter()或inserter()提高std :: copy()的效率
- DB2sql——insert all与insert first用法讲解与实例
- hive insert into语句 和 insert overwrite语句
- Hive之insert和insert overwrite
哪个更快:多个单 INSERT 或一个多行 INSERT?(多条insert怎么执行)
我正在尝试优化将数据插入 MySQL 的代码的一部分。我应该链接 INSERT 以制作一个巨大的多行 INSERT 还是多个单独的 INSERT 更快?
答案1
小编典典https://dev.mysql.com/doc/refman/8.0/en/insert-
optimization.html
插入一行所需的时间由以下因素决定,其中数字表示近似比例:
- 连接:(3)
- 向服务器发送查询:(2)
- 解析查询:(2)
- 插入行:(1×行大小)
- 插入索引:(1×索引数)
- 结束: (1)
由此可见,发送一个大语句将为您节省每个插入语句 7 的开销,在进一步阅读文本时还说:
如果您同时从同一个客户端插入多行,请使用带有多个 VALUES 列表的 INSERT 语句一次插入多行。这比使用单独的单行 INSERT
语句要快得多(在某些情况下快很多倍)。
c – 使用back_inserter()或inserter()提高std :: copy()的效率
例如,当你附加字符时,在复制时每个元素都会产生大量开销,而在许多情况下,实际上并不需要.
有没有办法让它们更有效率?
解决方法
总结
以上是小编为你收集整理的c – 使用back_inserter()或inserter()提高std :: copy()的效率全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
DB2sql——insert all与insert first用法讲解与实例
1、建测试表
CREATE TABLE EDW_INT
(
AGMT_NO VARCHAR2(40 BYTE) NOT NULL,
AGMT_SUB_NO VARCHAR2(4 BYTE) NOT NULL,
NEED_REPAY_INT NUMBER(22,2),
CURR_PERIOD NUMBER(4) NOT NULL
);
CREATE TABLE EDW_INT_1
(
AGMT_NO VARCHAR2(40 BYTE) NOT NULL,
AGMT_SUB_NO VARCHAR2(4 BYTE) NOT NULL,
NEED_REPAY_INT NUMBER(22,2),
CURR_PERIOD NUMBER(4) NOT NULL
);
CREATE TABLE EDW_INT_2
(
AGMT_NO VARCHAR2(40 BYTE) NOT NULL,
AGMT_SUB_NO VARCHAR2(4 BYTE) NOT NULL,
NEED_REPAY_INT NUMBER(22,2),
CURR_PERIOD NUMBER(4) NOT NULL
);
2、插入测试数据
INSERT INTO EDW_INT
(AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
VALUES
(''20003874'', ''2104'', 3126.5, 7);
INSERT INTO EDW_INT
(AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
VALUES
(''20003874'', ''2104'', 3290.76, 6);
INSERT INTO EDW_INT
(AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
VALUES
(''20003874'', ''2104'', 3454.06, 5);
INSERT INTO EDW_INT
(AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
VALUES
(''20003874'', ''2104'', 3616.41, 4);
INSERT INTO EDW_INT
(AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
VALUES
(''20017143'', ''2104'', 2350.86, 0);
INSERT INTO EDW_INT
(AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
VALUES
(''20017143'', ''2104'', 3566.55, 0);
INSERT INTO EDW_INT
(AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
VALUES
(''20018273'', ''2104'', 1639.46, 0);
INSERT INTO EDW_INT
(AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
VALUES
(''20018273'', ''2104'', 2080.49, 0);
COMMIT;
3、insert all/first语句示例
(1)、insert all-不带条件
insert all
into edw_int_1(agmt_no,agmt_sub_no,need_repay_int,curr_period)
values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
into edw_int_2(agmt_no,agmt_sub_no,curr_period)
values(agmt_no,''1234'',curr_period)
select agmt_no,agmt_sub_no,need_repay_int,curr_period from edw_int;
commit;
(2)、insert all-带条件
insert all
when curr_period=0 then
into edw_int_1(agmt_no,agmt_sub_no,need_repay_int,curr_period)
values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
else
into edw_int_2(agmt_no,agmt_sub_no,need_repay_int,curr_period)
values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
select agmt_no,agmt_sub_no,need_repay_int,curr_period from edw_int;
commit;
(3)、insert first-带条件
insert first
when curr_period=0 then
into edw_int_1(agmt_no,agmt_sub_no,need_repay_int,curr_period)
values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
when agmt_sub_no=''2104'' then
into edw_int_2(agmt_no,agmt_sub_no,need_repay_int,curr_period)
values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
select agmt_no,agmt_sub_no,need_repay_int,curr_period from edw_int;
commit;
4、数据结果查看
truncate table edw_int_1;
truncate table edw_int_2;
select * from edw_int;
select * from edw_int_1;
select * from edw_int_2;
5、all与first的区别
all:不考虑先后关系,只要满足条件,就全部插入;
first:考虑先后关系,如果有数据满足第一个when条件又满足第二个when条件,则执行第一个then插入语句,第二个then就不插入第一个then已经插入过的数据了。
其区别也可描述为,all只要满足条件,可能会作重复插入;first首先要满足条件,然后筛选,不做重复插入。
hive insert into语句 和 insert overwrite语句
1、insert into 语句
hive> insert into table userinfos2 select id,age,name from userinfos;
2、insert overwrite语句
hive> insert overwrite table userinfos2 select id,age,name from userinfos;
两者的区别:
insert overwrite 会覆盖已经存在的数据,如被覆盖的表中有3条数据和要插入的一条数据相同,那么覆盖后只会有一条数据;
insert into 只是简单的copy插入,不做重复性校验;
Hive之insert和insert overwrite
1. hive 表及数据准备
建表,并插入初始数据。向表中插入
hive> use test;
hive> create table kwang_test (id int, name string); hive> insert into kwang_test values(1,''kwang''); hive> insert into kwang_test values(2,''rzheng''); hive> select * from kwang_test; OK 1 kwang 2 rzheng
2. insert into 操作
insert into 语法:
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]
通过 insert into 语句向 kwang_test 表中插入一条数据,并查询结果。
hive> insert into table kwang_test values(3,''kk''); hive> select * from kwang_test; OK 1 kwang 2 rzheng 3 kk
3. insert overwrite 操作
insert overwrite 语法:
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;
insert overwrite 标准语法的数据来源是通过 select 语法来插入,但为了方便,直接插入 values。通过 insert overwrite 语句向 kwang_test 表中插入一条数据,并查询结果。
hive> insert overwrite table kwang_test values(4,''zz''); hive> select * from kwang_test; OK 4 zz
4. 两者异同
看到上面的现象与结果,基本能够明白 insert into 与insert overwrite 之间的异同,两者都可以向 hive 表中插入数据,但 insert into 操作是以追加的方式向 hive 表尾部追加数据,而 insert overwrite 操作则是直接重写数据,即先删除 hive 表的数据,再执行写入操作。注意,如果 hive 表是分区表的话,insert overwrite 操作只会重写当前分区的数据,不会重写其他分区数据。
今天关于哪个更快:多个单 INSERT 或一个多行 INSERT?和多条insert怎么执行的分享就到这里,希望大家有所收获,若想了解更多关于c – 使用back_inserter()或inserter()提高std :: copy()的效率、DB2sql——insert all与insert first用法讲解与实例、hive insert into语句 和 insert overwrite语句、Hive之insert和insert overwrite等相关知识,可以在本站进行查询。
本文标签: