1.最好用存储过程,退一步,用SQL语句
2.用视图、索引,不要直接对表进行操作。
3.根据你要需求,把DataSet中的数据量减到最少。

解决方案 »

  1.   

    ado.net and sql 都要用到
    肯定慢死了!不要这样做,要修改直接用sql 或者存储过程就可以了
    你的情况,临时表也不必要用,直接查询,选择出需要的来在进行修改,如果一定要用临时表,也不要用dataset,除非你的内存大死了,而且这样数据交换量会非常慢,处理10万条,这绝对不是好办法
      

  2.   

    说一下我的想法
    一 、对于大量频繁的数据处理,应该采用存储过程。
       有很多好处,1、处理效率高。
                   2、将实现的逻辑与代码剥离,当结构发生变化时,修改存储过程即可。
       缺点:存储过程和触发器在移植时可能会有困难,例如SQL 2000--->Oracle
    二、楼主开发的是C/S系统。那么客户端也许要装SQL的客户端建接口用户授权等
        (我以前的系统就是如此)。
        解决办法:1、采用WebService 将连接参数等设置好,建立不同的增、删、改的方法
                   调用不同的存储过程。客户端程序只需要连接WebService,执行不同的方法即可。
    三、DataSet可以作为参数传递给WebService ,因此代码简洁明了。
    四、我目前项目大体就是采用如上方式
        数据库:Oracle 9.2.0
        数据表:近百个
        目前数据量:近千万条。
        运行时间:11个月,一切正常
      

  3.   

    根本问题是项目是Winform,我没帮法不读取这10w条数据,它是个子表,客户要当点击父表的字段的时要及时显示字表的内容,所以我想采用本地数据库和数据库服务器综合使用的方法,每次启动软件先将基本数据填充到本地数据库,而客户端情况辨别是否需要读取这个字表,然后再做处理,说用存储过程的朋友能不能解释存储过程的优点?存储过程能不能判断主键冲突类似的问题?
      

  4.   

    一,随便,不过最好尽量使用SQL
    二,如果真的有这么多的数据,一下子读出来根本一点意义也没有,就算速度可以忍受,但你也没有办法对这么多数据进行编辑.建议分页读出来,每一页最多只显示N条记录,就如BBS一样.每一页每一页的读,读了修改,不修改当废.对大量数据的进行有规律的修改之类的,都只用SQL语句去把它搞定,判断是否修改了当前页面的记录,更直接的是把当前页面的数据重新读出来.
    三,如二,最多只用dataSet把显示的N条记录读出来.