求教,如何提升数据插入的效率? 程序需要以最短的时间往数据库表中插入大量的数据,自己写了个小程序测试了下,一百万条记录插了半小时,感觉时间消耗的太长.已经批量提交了不能no log不能删索引求教有何好方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最好用procedure去写.把你的程序帖出来看看. 硬件固定的了,不能升级的,主键约束等也是必须的缓冲和回滚各20G左右不能使用存储过程,就是C++程序调用oci往数据库写 for(int i=0;i<=1000000;i++) { m_hdbtxt.Format("insert into yu_ls values(%d,sysdate)",i); if(!DataBase.executeUpdate(LPTSTR(LPCTSTR(m_hdbtxt)),false)) { AfxMessageBox("error!!!!!!!!!!!!!!!!"); } }代码就这么简单... 批量提交的是另一段代码,没1000条commit一次但是效率提升不明显,只提升了30%,提升后是1700秒直接用这段代码得2200秒... 我看最好写一存储过程,在存储过程里面处理,第二个日期字段不插入,等插入完100万笔数据后,再一次性update第二个字段日期为当前日期时间oracle不是一个rownum吗?第一次用循环插入完1000笔数据后,第二次从1001开始插入,取出第一次插入最大ID=1000再加上行号1...1000,再插入1000笔,结果结有2000数据依次类推....第三次插入后,结果4000笔数据第四次插入后,结果8000笔数据.......最后判断是否插入够100万笔? 插入完后,一次性update日期字段 insert into yu_ls values(:i,sysdate) using i绑定变量后,硬解析少了,会快不少你可以用存储过程去做,存储过程就是用的绑定变量的 windows server 2008+oracle 11g 求两个时间点之间的工作日天数 oracle 11g连接用户名和密码是什么? 在线等分析,oracle的insert插入非常慢 ORACLE访问SQL的问题 Sql和Oracle存储过程 大虾国庆帮忙 怎么把文件中的sql语句用命令行导入到数据库中? 监听器错误 高薪诚聘OCP认证工程师 oracle的菜鸟问题 Oracle report - formate is TRF,请教 oracle 周的计算问题
缓冲和回滚各20G左右
不能使用存储过程,就是C++程序调用oci往数据库写
{
m_hdbtxt.Format("insert into yu_ls values(%d,sysdate)",i);
if(!DataBase.executeUpdate(LPTSTR(LPCTSTR(m_hdbtxt)),false))
{
AfxMessageBox("error!!!!!!!!!!!!!!!!");
}
}代码就这么简单...
但是效率提升不明显,只提升了30%,提升后是1700秒
直接用这段代码得2200秒...
oracle不是一个rownum吗?
第一次用循环插入完1000笔数据后,
第二次从1001开始插入,取出第一次插入最大ID=1000再加上行号1...1000,再插入1000笔,结果结有2000数据
依次类推....
第三次插入后,结果4000笔数据
第四次插入后,结果8000笔数据
.......
最后判断是否插入够100万笔?
插入完后,一次性update日期字段
绑定变量后,硬解析少了,会快不少你可以用存储过程去做,存储过程就是用的绑定变量的