日期:2014-05-19  浏览次数:20472 次

请教:使用DataSet向数据库插入记录的效率问题
对于一个有几十万甚至更多条记录的数据库表,如果使用DataSet插入记录,每次都把整个表存入DataSet中再新增加记录行,之后更新。这样做效率是不是很低啊?
        有没有办法不向DataSet读入任何一条记录,直接增加新的记录到DataSet中,再更新?如果可以,这样可以保证ID之类的域的自增加操作顺利执行吗?还是要一些额外操作?
        另外,我只是想知道针对DataSet执行这些插入操作的效率,而不是问怎么写存储过程或别的方法提高效率,谢谢。

------解决方案--------------------
如果使用DataSet插入记录,每次都把整个表存入DataSet中再新增加记录行,之后更新。这样做效率是不是很低啊?
这个得看你具体的操作环境,不过依据你现有的描述,变化比较频繁的话,还是先把这些变化作用在dataset上,到最后用户确定不再变化可以提交了再一次提交给数据库。
DataSet实际上是个离线的数据库,它也有主键信息前提是你的实际数据库设置了该信息!所以如果你加入一个重复的记录到dataset,一样的会报错
------解决方案--------------------
你要自己搞清自己的“更新”具体是什么操作。如果是新增,那么根本不需要读入DataSet(废话!)。如果是更改和删除,那么需要读入,但是涉及哪条记录才需要读入哪条记录,而不是读入所有记录。

读入不需要的记录,是不需要的。
------解决方案--------------------
微软的水平不会向你想象的那么笨, 人家肯定早就想好了dataset读入大批记录的问题, 只会预先读入小部分供在页面上显示并且修改.当然从逻辑上说,你掌握的是全部数据. 至于内部的实现机制, 不是我等搞得清楚的.反正是有DBMS+OS两大系统帮你调配的.