如果不希望DB编译器每次执行都编译SQL的话,可以使用存储过程,直接调用,性能上会好很多。也比较简单。
(几万条数据怎么地也得要时间去处理,所以不可能特别快的。)
如果由于各种原因,导致这个插入还是很慢, 而且你的MYSQL又是5.0以上版本的话,可以使用BulkCopy来进行批量 *** 作。
BulkCopy的原理就是Client直接把一个数组(DataTable)传给DB,然后传入表名,所有的编译、 *** 作都由DB自己完成,效率很高。
引用MySql.Data.dll , 调用MysqlBulkCopy函数即可。
这个函数在处理海量数据插入的时候效率尤为明显, 小量数据反而没什么优势,而且由于传入的DataTable格式必须和表的字段一模一样(空的列也要传进去),导致C#要写很多代码来构造这个数组,所以要你自己权衡用还是不用。
我在自己的电脑上批量插入一亿条数据,Insert写法大概需要1小时,BulkCopy大概只需要5分钟。
一次插入多行数据insert into 表名[(字段列表)]values(值列表1),(值列表2),...(值列表n)
例如:
insert into students(sid,sname,dob) values
('001','张三','2001-02-03'),
('002','李四','2002-02-03'),
('003','王五','2003-02-03');
将一张表或查询中的数据插入到另一张表里
insert into 表名(字段列表) select (字段列表) from 源表 where 筛选表达式;
例如将表2中的记录全部插入到表1,假设它们的结构一样
insert into 表1(*) select * from 表2;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)