要求插入100000条数据用如下的代码那个效率太低了。
服务器配置内存 256MB,应该是好几年前的电脑了。
declare @a int
set @a=0
while @a<100000
begin
insert into TbPerson(CoName,CoSex,CoMark) values('AAAA','男','CCCCCC')
set @a=@a+1
END
有没有更高效率的插入语句? 插入的内容都一样的,如上所示 AAAA,男,CCCCC
你这个已经是比较简单的写法了,如果你的数据库中有某张表有100000条数据(数据内容任意),你可以这样写:
insert into TbPerson select top 100000 'AAAA','男','CCCCCC' from #t
#t就是有 100000 条数据的那张表,如果没有就找个数据多点的,多执行几次
有没有更高效的写法?
我用自己写的插入语句。
插入10万条数据要好几分钟啊。
使用System.Data.SqlClient.SqlBulkCopy代替insert
System.Data.SqlClient.SqlBulkCopy 提供WriteToServer(datatable)提交数据。
首先,在内存建立一个datatable,当然可以直接通过select出来。
然后,循环加往table中入数据
几秒钟时间变可以完成。与insert不同的是,该提交方法,只有生成一条sql语句。速度当然很快。
具体方法,可以查看微软的官方文档。
使用如下写法,应该很快。
insert into TbPerson select 'AAAA','男','CCCCCC' from ( select number from master..spt_values where type='P' and number<1000 ) A cross join ( select number from master..spt_values where type='P' and number<100 ) B