千万级存储过程优化问题,有答案就结贴

wjxluck 2010-05-31 10:22:58
先从两个表里面取差不多2000万条的数据,然后插入到另一个表中。查询过程不能优化,请问插入过程怎么优化,用存储过程实现的。我之前直接插入,差不多要1个小时。大家各抒己见呀,顶了就给分。
...全文
107 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dollyxz 2010-08-07
  • 打赏
  • 举报
回复
用ETL或DTS包,应该可以快点.
fight-unknow 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovcal 的回复:]

2000来万不用这么长时间吧?

这么试试看:

SQL语句中先删除主键\索引等信息,修改配置插入不及日志,做完插入之后再把主键索引等重新建立.
[/Quote]

一个小时。。。

是啊,不是IO问题就是表有索引或视图在上面,我们这里的破机器都不要那么长时间。。
biabiasir 2010-07-27
  • 打赏
  • 举报
回复
用创建个ETL包几分钟就导过去了
jintiann 2010-07-23
  • 打赏
  • 举报
回复
目前用到的都是直接插入,确实比较慢,有时还无故终止。同求。
iihero 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 wjxluck 的回复:]
先从两个表里面取差不多2000万条的数据,然后插入到另一个表中。查询过程不能优化,请问插入过程怎么优化,用存储过程实现的。我之前直接插入,差不多要1个小时。大家各抒己见呀,顶了就给分。
[/Quote]
你说的查询过程不能优化,它占用这1个小时的多大比例时间?
insert into ** select * 应该是最快的方式了。
gslmtu 2010-07-23
  • 打赏
  • 举报
回复
用BCP最快
yushenbo 2010-07-21
  • 打赏
  • 举报
回复
还有另外一个不是存贮过程的办法可供参考,用bcp插入.
lovcal 2010-06-08
  • 打赏
  • 举报
回复
2000来万不用这么长时间吧?

这么试试看:

SQL语句中先删除主键\索引等信息,修改配置插入不及日志,做完插入之后再把主键索引等重新建立.

ACMAIN_CHM 2010-06-03
  • 打赏
  • 举报
回复
2000万条的数据

没什么好办法。 最简单的还是直接 insert into xxxx select * from t1, 然后再insert into xxxx select * from t2;
WWWWA 2010-06-03
  • 打赏
  • 举报
回复
能否导出到TXT文件。再导入到相应的表中
lucky_2005 2010-06-03
  • 打赏
  • 举报
回复
这个数据量级要想在sql层面优化是满困难的,只有在数据库性能方面想想办法了。insert是记录日志,然后写入记录的,这个数量级1个小时要的。
  • 打赏
  • 举报
回复
看你的语句的插入方式了, 最好弄成不计日志的那种。
select * into bakup_table from table_name where_clause
这种方式会自动创建表bakup_table并把满足条件的记录插入到表bakup_table中,而且不计日志。
还有, 修改参数使得ase引擎每次给新表bakup_table分配连续的多个页面,默认好像是每次分配一页。

如果还不行的话, 估计你的硬件就有问题了,换个高速的IO设备试试。

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧