为什么Oracle在执行批量插入时会更改数据的物理订单?

时间:2011-11-11 06:44:32

标签: oracle jdbc apache-poi

我必须使用Java POI将一些excel文件批量导入Oracle数据库。 Java程序非常简单,只需使用JDBC来惰化它们。

但是当我检查表时,我发现数据的物理顺序发生了变化。例如,我导入这样的数据:


S/N     Name       
S0001   Name1
S0002   Name2
S0003   Name3
S0004   Name4
S0005   Name5
S0006   Name6
.....

,表格就是这样:


S/N     Name       
S0001   Name1
S0003   Name3
S0004   Name4
S0002   Name2
S0006   Name6
S0005   Name5
.....

以前有人有同样的奇怪问题吗?

1 个答案:

答案 0 :(得分:8)

堆组织表本质上是无序的。除非您的查询指定ORDER BY子句,否则Oracle可以按其选择的顺序自由返回数据。无论插入顺序如何,都可以按任意顺序物理存储数据。

如果您关心数据的返回顺序,可以添加适当的ORDER BY

SELECT serial_number, name
  FROM your_table_name
 ORDER BY serial_number