有一个历史流水表,数据量很大,有1千万条以上的数据
现在我要把这个表中的所有数据都取出来,逐条进行分析,得到一些统计结果
请问怎样才可以做到从数据库中查询如此大量的数据时,能尽可能的减轻数据库的负担(不影响其他业务),
而且又可以让前台客户端程序的响应时间在可以接受的范围内?我用的数据库是Oracle8i,我的客户端是通过2的方式与数据库连接的1、如果客户端与数据库是通过ADO方式连接,应该如何做?2、如果客户端与数据库没有直接连接,而是通过一个Socket程序连接,查询结果是用文件方式返回的,应该如何做?
现在我要把这个表中的所有数据都取出来,逐条进行分析,得到一些统计结果
请问怎样才可以做到从数据库中查询如此大量的数据时,能尽可能的减轻数据库的负担(不影响其他业务),
而且又可以让前台客户端程序的响应时间在可以接受的范围内?我用的数据库是Oracle8i,我的客户端是通过2的方式与数据库连接的1、如果客户端与数据库是通过ADO方式连接,应该如何做?2、如果客户端与数据库没有直接连接,而是通过一个Socket程序连接,查询结果是用文件方式返回的,应该如何做?
如果表里的数据量非常大,那我在存储过程里执行select * from table,和在客户端用SQLPLUS连上数据库直接写语句select * from table,对数据库资源的占用有很大差别吗?
------------------会占更多的网络资源。我认为还是恢复历史数据到其他机器上处理。
1、把所有的工作放在服务器做,客户端只接收结果,这样可以大大减少网络流量。
2、把表建立 Index 这样对速度有很大的提升。
3、优化查询语句。
当然不一样.
如果在存储过程中执行,返回的记录是在服务器的内存中,执行完所有操作后,将结果返回给客户端.
如果你直接在客户端执行,则所有的记录会先下载到本地的内在中.
10,000,000条,嘿嘿,累死你.
----------------------------
1:占用了大量的网络资源,就会影响服务器响应其他客户端的请求,从而影响其他业务。
2:执行同样的select * from table语句,在本地执行消耗的服务器资源还是比在客户端执行的要大,因为服务器需要消耗大量的资源来实现客户端的通讯。3:如果你的服务器性能优越,就最好在服务器执行,如果性能一般,最好恢复到其他机器,再在那台机器上执行,这样不会影响其他业务。