Sql 是否可以按页查询没有订单列的表

Sql 是否可以按页查询没有订单列的表,sql,oracle,Sql,Oracle,在oracle中,我有一个包含超过10万条记录的大表。我想获得所有记录,并用JDBC将每一行保存到一个文件中 为了加快速度,我想创建100个线程来同时从表中读取数据。我将获得第一个sql中记录的总数,然后将其拆分为100页,然后在具有新连接的线程中获得一页 但我有一个问题,没有任何一列可以用来订购。没有带序列的列,没有准确的时间戳。我不能使用sql查询而不使用orderby子句进行查询,因为不能保证每次(每次)都返回相同顺序的数据 那么有可能解决它吗?最后,我使用rowid来订购: select

在oracle中,我有一个包含超过10万条记录的大表。我想获得所有记录,并用JDBC将每一行保存到一个文件中

为了加快速度,我想创建100个线程来同时从表中读取数据。我将获得第一个sql中记录的总数,然后将其拆分为100页,然后在具有新连接的线程中获得一页

但我有一个问题,没有任何一列可以用来订购。没有带序列的列,没有准确的时间戳。我不能使用sql查询而不使用
orderby
子句进行查询,因为不能保证每次(每次)都返回相同顺序的数据


那么有可能解决它吗?

最后,我使用
rowid
来订购:

select * from mytable order by rowid

它似乎工作得很好。

“我有一个包含超过10万条记录的大表”-不,你没有!如果它有1000亿行,它会很大。这是一个小表,但当你“将每一行保存到一个文件”时,它会很大。话虽如此,您是否计划经常这样做?如果不是,您不必担心,只需在一个线程中执行即可。@dystroy:如果每行都是,比如说,500字节(这不是一个不公平的假设),那么开销大约为60MB。你能把一个60MB的文件称为大文件吗?我不会…@MitchWheat我当然也不会。也许你和我不了解,但我知道OP想要写100K文件。你也应该考虑100个线程。这只有当你有100个处理器时才有意义,我不相信这一点。我真的会将线程数限制在处理器的数量上,除了所有线程都没有太多的工作,但在这种情况下这不算。