问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

insert into语句怎么用?

发布网友 发布时间:2022-04-13 03:30

我来回答

2个回答

懂视网 时间:2022-04-13 07:52

MYSQL批量插入数据库实现语句性能分析

假定我们的表结构如下

代码如下

CREATE TABLE example (
example_id INT NOT NULL,
name VARCHAR( 50 ) NOT NULL,
value VARCHAR( 50 ) NOT NULL,
other_value VARCHAR( 50 ) NOT NULL
)

 通常情况下单条插入的sql语句我们会这么写:

代码如下

INSERT INTO example
(example_id, name, value, other_value)
VALUES
(100, 'Name 1', 'Value 1', 'Other 1');

 mysql允许我们在一条sql语句中批量插入数据,如下sql语句:

代码如下

INSERT INTO example
(example_id, name, value, other_value)
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');

如果我们插入列的顺序和表中列的顺序一致的话,还可以省去列名的定义,如下sql

代码如下

INSERT INTO example
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');

上面看上去没什么问题,下面我来使用sql语句优化的小技巧,下面会分别进行测试,目标是插入一个空的数据表200W条数据

第一种方法:使用insert into 插入,代码如下:

$params = array('value'=>'50');
set_time_limit(0);
echo date("H:i:s");
for($i=0;$i<2000000;$i++){
$connect_mysql->insert($params);
};
echo date("H:i:s");

最后显示为:23:25:05 01:32:05 也就是花了2个小时多!

第二种方法:使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒 ,代码如下:

echo date("H:i:s");
$connect_mysql->query('BEGIN');
$params = array('value'=>'50');
for($i=0;$i<2000000;$i++){ 
$connect_mysql->insert($params);
if($i%100000==0){
$connect_mysql->query('COMMIT');
$connect_mysql->query('BEGIN');
}
}
$connect_mysql->query('COMMIT');
echo date("H:i:s");

第三种方法:使用优化SQL语句:将SQL语句进行拼接,使用 insert into table () values (),(),(),()然后再一次性插入,如果字符串太长,

 则需要配置下MYSQL,在mysql 命令行中运行 :set global max_allowed_packet = 2*1024*1024*10;消耗时间为:11:24:06 11:25:06;

 插入200W条测试数据仅仅用了1分钟!代码如下:

$sql= "insert into twenty_million (value) values";
for($i=0;$i<2000000;$i++){
$sql.="('50'),";
};
$sql = substr($sql,0,strlen($sql)-1);
$connect_mysql->query($sql);

最后总结下,在插入大批量数据时,第一种方法无疑是最差劲的,而第二种方法在实际应用中就比较广泛,第三种方法在插入测试数据或者其他低要求时比较合适,速度确实快。

【相关推荐】

1. 分享一条insert语句批量插入多条记录教程

2. 解析mysql中常用的三种插入语句及其区别

热心网友 时间:2022-04-13 05:00

INSERT INTO 语句可以有两种用法:

1、第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name
VALUES (value1,value2,value3,...)

2、第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...)

其他SQL语句:

创建新数据库:CREATE DATABASE

修改数据库:ALTER DATABASE

创建新表:CREATE TABLE

变更(改变)数据库表:ALTER TABLE

删除表:DROP TABLE

创建索引(搜索键):CREATE INDEX

删除索引:DROP INDEX

删除主键:Alter table tabname drop primary key(col)

选择:select * from table1 where 范围

插入:insert into table1(field1,field2) values(value1,value2)

删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围

查找:select * from table1 where field1 like ’%value1%’ 

排序:select * from table1 order by field1,field2 [desc]

总数:select count as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 人民警察的警察证工作证和执勤证的区别 不是本地人,身份证丢了怎么办 广东东坑分局的警察工作证是什么样子的? 身份证丢失不是本地户口怎么补办 身份证丢了户口不是本地的怎么办 身份证丢了怎么可以补办、(不在本地) 身份证丢了 但是人不在本地怎么办 身份证丢了 不在当地能补办吗 身份证丢失了,不在本地可以补办吗 身份证掉了,本人不在当地怎么办 身份证丢了怎么办,人不在本地,急 身份证丢了怎么办本人又不在本地怎么办 职务违法和职务犯罪有什么区别 职务违法和职务犯罪有哪些区别 职务违法与职务犯罪的区别 《中华人民共国监察法》列举的公职人员主要职务违法和职务犯罪行为具体指什么? 职务违法的七类情形是什么 哪些行为属于职务违法 职务违法和职务犯罪的区别是什么 职务违法都包括什么? 警察工作证丢了严重么 刑警的工作证和普通民警的工作证一样吗 警察工作证怎样排号? 易油通里说的圈存、分配是什么意思? 汽车贷款需要哪些材料? 大家用过易油通这个软件吗?我看到去加油的怎么都在用这个加油啊? 易油通这个的加油充值是真的吗? 易油通加油卡在哪里可以用? 据说易油通已经有上千万的车主在用,真的安全吗? 易油通(北京)资产管理有限公司怎么样? 车安优和易加油都有什么区别嘛? 易油卡在哪里可以用 男性泌尿系统感染用什么药可以治疗? 梦到树上结满硕大的石榴,石榴开满黄色的花朵寓意什么? 昨天晚上我梦见了一棵很大的石榴树,上面结了很多石榴,还开了很多石榴花 梦见石榴花一边石榴都长得很大,好像快成熟了,另一边的石榴花正在开花 insert into语句 历年上海公务员考试面试真题 上海公务员面试真题哪里有啊,最好是附带解析的那种 2015上海公*面试真题下载哪里可以下载,求有答案解析版的?