有一个历史流水表,数据量很大,有1千万条以上的数据
现在我要把这个表中的所有数据都取出来,逐条进行分析,得到一些统计结果
请问怎样才可以做到从数据库中查询如此大量的数据时,能尽可能的减轻数据库的负担(不影响其他业务),
而且又可以让前台客户端程序的响应时间在可以接受的范围内?我用的数据库是Oracle8i,我的客户端是通过2的方式与数据库连接的1、如果客户端与数据库是通过ADO方式连接,应该如何做?2、如果客户端与数据库没有直接连接,而是通过一个Socket程序连接,查询结果是用文件方式返回的,应该如何做?

解决方案 »

  1.   

    如果表里的数据量非常大,那我在存储过程里执行select * from table,和在客户端用SQLPLUS连上数据库直接写语句select * from table,对数据库资源的占用有很大差别吗?
      

  2.   

    回复人: zhaojin1975(莱因哈特) ( ) 信誉:91  2004-09-22 17:20:00  得分: 0  
     
     
       如果表里的数据量非常大,那我在存储过程里执行select * from table,和在客户端用SQLPLUS连上数据库直接写语句select * from table,对数据库资源的占用有很大差别吗?
     
     
    ------------------会占更多的网络资源。我认为还是恢复历史数据到其他机器上处理。
      

  3.   

    to xhh_88(三友)是会占用更多的网络资源,但是对数据库资源的占用有很大差别吗?我现在关心的是尽量少的占用数据库资源,因为即使用存储过程执行select * from table也会占用很多数据库资源
      

  4.   

    给你提两点建议:
    1、把所有的工作放在服务器做,客户端只接收结果,这样可以大大减少网络流量。
    2、把表建立 Index 这样对速度有很大的提升。
    3、优化查询语句。
      

  5.   

    to:zhaojin1975(莱因哈特)
    当然不一样.
    如果在存储过程中执行,返回的记录是在服务器的内存中,执行完所有操作后,将结果返回给客户端.
    如果你直接在客户端执行,则所有的记录会先下载到本地的内在中.
    10,000,000条,嘿嘿,累死你.
      

  6.   

    回复人: zhaojin1975(莱因哈特) ( ) 信誉:91 是会占用更多的网络资源,但是对数据库资源的占用有很大差别吗?我现在关心的是尽量少的占用数据库资源,因为即使用存储过程执行select * from table也会占用很多数据库资源
    ----------------------------
    1:占用了大量的网络资源,就会影响服务器响应其他客户端的请求,从而影响其他业务。
    2:执行同样的select * from table语句,在本地执行消耗的服务器资源还是比在客户端执行的要大,因为服务器需要消耗大量的资源来实现客户端的通讯。3:如果你的服务器性能优越,就最好在服务器执行,如果性能一般,最好恢复到其他机器,再在那台机器上执行,这样不会影响其他业务。
      

  7.   

    通过ADO使用存储过程在服务器处理