Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助] 大批量数据新增/更新到数据库

1楼
252476276 发表于:2024/5/8 10:36:00
求教:

页面上有1万+的数据量,有几个主键值,需要新增到数据库表中,需要防止主键重复。

应该如何写代码,才能速度很快。

        现在用的是每一条写一个sql语句判断表中是否存在, 如果存在就更新,不存在就新增

与数据库执行1万次语句,需要1.5分钟。 如何优化?
2楼
有点蓝 发表于:2024/5/8 10:53:00
要快,需要添加一个辅助的东西。

1、在数据库里建一个同结构的新表,如果是SqlServer,参考这种方式批量把数据导入这个新表:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=147288
2、然后使用sql批量处理

已有数据进行关联更新,类似:
update a set a.列1=b.列1,a.列2=b.列2,.... from 数据库原表 as a  inner join 同结构的新表 as b where a.主键1=b.主键1 and a.主键2=b.主键2 

新数据进行关联插入,类似:
insert into 数据库原表(列1,列2,....) select 列1,列2,.... from 同结构的新表 as b where not exists ( select 主键1 from 数据库原表 as a where a.主键1=b.主键1 and a.主键2=b.主键2 )
3楼
252476276 发表于:2024/5/8 11:23:00
第1种方法,不检查重复性
第2种方法,跟我用的类似,执行一万次与合起来500个发送一次,速度都差不多
4楼
有点蓝 发表于:2024/5/8 11:32:00
不是2种方法。2楼是只是一种方法的2个步骤,合起来使用。

如果使用sqlbuck导数据,1W行不应该超过1秒,超过了肯定是用法不对
5楼
252476276 发表于:2024/5/8 13:06:00
实际上不能算是新增数据了,都是更新, 不能批量操作,都是一条一条的执行。
所以第1条方法就用不上了。
6楼
252476276 发表于:2024/5/8 13:15:00
懂了
[此贴子已经被作者于2024/5/8 13:20:27编辑过]
共6 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .01611 s, 2 queries.