关于Oracle数据库插入数据排序的问题

我通过eclips编写java程序往Oracle数据库中插入数据,在数据库中建立createtablestu(idnumberprimarykey,namevarchar... 我通过eclips编写java程序往Oracle数据库中插入数据,在数据库中建立 create table stu(id number primary key,name varchar2(20)); 建立序列create sequence start with 100 increment by 2;
java程序如下:
import java.sql.*;
public class test {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement stmt=null;
String sql="insert into stu values(stu_seq.nextval,?)";
try {
conn=ConnectionUtils.openConnection();
stmt=conn.prepareStatement(sql);
conn.setAutoCommit(false);
for(int i=0;i<10000;i++){
stmt.setString(1, "Jack"+i);
stmt.addBatch();
if(i%1000==0){
stmt.executeBatch();
stmt.clearBatch();
}
}
stmt.executeBatch();
conn.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
即通过批处理往数据库stu表增加数据,当i<2000时,通过select * from stu where rownum<20;查询时,结果集的数据顺序按照插入顺序,即Jack0在第一行, 但是当i<10000或者更大时,用select * from stu where rownum<20;查询,排在第一位的不是Jack0,

而第一个插入的Jack0排到了:1218 行上

求大神详细解答! 谢谢!
展开
 我来答
ssmissle
2015-01-24 · TA获得超过100个赞
知道小有建树答主
回答量:78
采纳率:66%
帮助的人:60.6万
展开全部
正常现象。sql中没有使用order by的情况下,查询结果集的返回次序本来就是不受保证的
更多追问追答
追问
数据插入有顺序可言吗? 插入数据量较小时,还是按顺序的!
追答
我理解的“顺序”是针对数据显示而言的,对于数据插入来说没有顺序这么一说。

如果你说的插入顺序指的是存储时的物理分布的话,答案是同样不保证顺序。具体原因请从oracle block的存储机制上考虑。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式