A表: 3千W条数据。
B表:2.8千W条数据。
SELECT * FROM A表 WHERE PROJ_ID=629 -- 有180W条数据。
把上面180W条数据插入到B表。 要怎么处理。请大侠帮忙 谢谢
目前提示:失败,出现超时过期。
------解决思路----------------------
建议分批插入,比如一次1000条,关于数据的过滤,那就看你的业务了
------解决思路----------------------
以我的经验,2005以上的话应该不会插入失败
1检查硬件性能
2删除索引
------解决思路----------------------
SSIS导入?
------解决思路----------------------
做数据备份转移时,我以前也是这样执行过插入、删除,一张表数据量大的时候,可能一次需要3-4个小时时间执行,也不会出现超时。如果是数据量实在太大,可以考虑按ID,或者时间分成若干次操作
要考虑一下是否有主键冲突的数据
------解决思路----------------------
大数据就不能“加起来导入”,应该“各自分批导入”。
一边生成数据一边导入就不存在“从2.8千W 中找出 200W条”的问题了。
------解决思路----------------------
分批写入,每次 一万行,180 个循环也就完事了。
------解决思路----------------------
之前在测试环境删除过数据,如果一次删除 会很慢,这个慢有很多方面,通过分批 很明显的加快了速度,另外 PROJ_ID上的索引页很重要,这样可以加快查找速度。
但是,插入分批 就不一定提高性能了。
还有个问题是 如何分批,因为删除的话比较好分批处理,但是插入的话 就要有个标记 标明 哪些已经插入,哪些还没有插入。
------解决思路----------------------
我觉得可否试一下这个方法,首先用ssis 导出A表的指定数据到txt文件,然后再导入到 B表,这样速度应该会快一点。
------解决思路----------------------
另外,你的超时 可能是你设置了查询超时的时间了吧