冬 冬月 Unregistered / Unconfirmed GUEST, unregistred user! 2007-10-15 #1 有一个ORACLE数据库,一个表中的数据过5千万条,我要得到这个表中一个字段的所有记录,如果用SELECT * FROM .......这样的语句就把记录全下到本地机上了,本地机吃不消,有没有能把记录一条一条按顺序取出来的SQL语句?
有一个ORACLE数据库,一个表中的数据过5千万条,我要得到这个表中一个字段的所有记录,如果用SELECT * FROM .......这样的语句就把记录全下到本地机上了,本地机吃不消,有没有能把记录一条一条按顺序取出来的SQL语句?
J jjxboy Unregistered / Unconfirmed GUEST, unregistred user! 2007-10-15 #2 可以搞一个clientdataset 每次取100条记录,这样客户机会好一点
Y ycluo Unregistered / Unconfirmed GUEST, unregistred user! 2007-10-16 #4 你这样肯定不行的,不管用什么都不行的,别人银行也要把数据备份走啊
X xfeiffer Unregistered / Unconfirmed GUEST, unregistred user! 2007-10-16 #5 你非得要这一个字段的记录么?像select *这样的肯定不行。<br>你可以看一下其余的字段,是否有一些是有规律的,或者有的字段在很多记录中有相同的值这样的,一次取一组这样记录处理完毕然后在取下一组就行了。<br>虽然我的表中远没有5千万条记录,但每个表中也差不多300万条记录以上,这样取比select *快出不少。<br>还有,取的时候一定要有索引,否则...等到头发都白了
你非得要这一个字段的记录么?像select *这样的肯定不行。<br>你可以看一下其余的字段,是否有一些是有规律的,或者有的字段在很多记录中有相同的值这样的,一次取一组这样记录处理完毕然后在取下一组就行了。<br>虽然我的表中远没有5千万条记录,但每个表中也差不多300万条记录以上,这样取比select *快出不少。<br>还有,取的时候一定要有索引,否则...等到头发都白了
B boy2002cn Unregistered / Unconfirmed GUEST, unregistred user! 2007-10-16 #6 1 计算总数据量<br>2 计算总页数<br>3 分页 把你查询的SQL代入下面的SQL中<br> 'select * from (select rownum RecordId,t.* from (%s) t  where RecordId between %d and %d'<br>%d,%d是分布的开始记录和终止记录,保证这两个值在(0,总数据量)的范围内,可以用<br>(当前页面数据-1)*50,当前页面数据*50代入,这样每页是50行记录。这个是ORACLE的分页。
1 计算总数据量<br>2 计算总页数<br>3 分页 把你查询的SQL代入下面的SQL中<br> 'select * from (select rownum RecordId,t.* from (%s) t  where RecordId between %d and %d'<br>%d,%d是分布的开始记录和终止记录,保证这两个值在(0,总数据量)的范围内,可以用<br>(当前页面数据-1)*50,当前页面数据*50代入,这样每页是50行记录。这个是ORACLE的分页。