【Oracle】-【插入读取顺序】-插入读取之间的顺序关系

简介: Oracle插入记录的顺序是否是读取的顺序?通过一个简单的实验验证:SQL> create table t( x int,a char(2000) default 'x',b char(2000) default 'x',c char(2000) default 'x');Table created.

Oracle插入记录的顺序是否是读取的顺序?


通过一个简单的实验验证:

SQL> create table t
( x int,
a char(2000) default 'x',
b char(2000) default 'x',
c char(2000) default 'x');
Table created.

SQL> insert into t (x) values ( 1 );
1 row created.

SQL> insert into t (x) values ( 2); 
1 row created.

SQL> insert into t (x) values ( 3); 
1 row created.

SQL> commit;
Commit complete.

SQL> select x, rownum, rowid from t; 
         X     ROWNUM ROWID
---------- ---------- ------------------
         3          1 AAAOXNAAHAAAAasAAA
         1          2 AAAOXNAAHAAAAavAAA
         2          3 AAAOXNAAHAAAAawAAA


SQL> delete from t where x = 2;
1 row deleted.

SQL> commit;
Commit complete.

SQL> select x, rownum, rowid from t; 
         X     ROWNUM ROWID
---------- ---------- ------------------
         3          1 AAAOXNAAHAAAAasAAA
         1          2 AAAOXNAAHAAAAavAAA

SQL> insert into t (x) values ( 4 );
1 row created.


SQL> select x, rownum, rowid from t; 
         X     ROWNUM ROWID
---------- ---------- ------------------
         3          1 AAAOXNAAHAAAAasAAA
         1          2 AAAOXNAAHAAAAavAAA
         4          3 AAAOXNAAHAAAAawAAA

insert into t (x) values ( 5);


SQL> select x, rownum, rowid from t; 

         X     ROWNUM ROWID
---------- ---------- ------------------
         3          1 AAAOXNAAHAAAAasAAA
         5          2 AAAOXNAAHAAAAatAAA
         1          3 AAAOXNAAHAAAAavAAA
         4          4 AAAOXNAAHAAAAawAAA

SQL> insert into t (x) values ( 10);
1 row created.

SQL> select x, rownum, rowid from t; 
         X     ROWNUM ROWID
---------- ---------- ------------------
         3          1 AAAOXNAAHAAAAasAAA
         5          2 AAAOXNAAHAAAAatAAA
        10          3 AAAOXNAAHAAAAauAAA
         1          4 AAAOXNAAHAAAAavAAA
         4          5 AAAOXNAAHAAAAawAAA


可见Oracle读取时按照记录的ROWID默认升序排列的,Oracle是一种堆表(默认),堆的意思就是杂乱无章的,插入数据时是根据内部算法,找到可用的数据块,一般出于效率的考虑,不采用原来的空间,用逻辑块的新空间,读取的顺序与COMMIT也没有直接关系,所以要排序,最好用ORDER BY。

目录
相关文章
|
Oracle 关系型数据库 Java
解决读取Oracle数据库US7ASCII编码乱码问题
今天和第三方对接数据时,对方提供了一个视图US7ASCII编码,给代码调试带来了很大的不便。程序输出的mybatis获取的对象及new String(s.getBytes("ISO8859-1"), "GB2312")加解密后都是乱码。
1752 1
|
SQL 关系型数据库 Java
mybatis oracle BLOB类型字段保存与读取
一、BLOB字段   BLOB是指二进制大对象也就是英文Binary Large Object的所写,而CLOB是指大字符对象也就是英文Character Large Object的所写。其中BLOB是用来存储大量二进制数据的;CLOB用来存储大量文本数据。
4891 0
|
Oracle Java 关系型数据库
通过Loadrunner读取excel表数据并批量更新到Oracle中
本文以Loadrunner的Java_Vuser脚本为例,来做一个简化版的自动化测试框架(以excel作为数据驱动),实现批量更新Oracle业务数据库的目的,通过本文例子我们还可以实现将Loadrunner由性能测试工具,转换成一个接口自动化测试工具
1037 0
|
Oracle 关系型数据库 数据库
再次明确Oracle插入与读取的顺序问题
今天老婆问到一个问题:Oracle中,插入多条记录后,读的时候如果不用Order by,那顺序是如何?如果中间涉及UPDATE和DELETE,是否有影响? 这个其实之前总结过这个问题,但确实感觉没有深刻理解,才导致不是十分确定,看来还是方法上要改进。
1000 0
|
SQL 关系型数据库 测试技术
[20130902]Oracle 11G数据库的一致读性读取行为的改变.txt
[20130902]Oracle 11G数据库的一致读性读取行为的改变.txthttp://www.dbsnake.net/oracle-cr-behavior-change.
939 0
|
SQL Oracle 关系型数据库
c++写入oracle数据库blob字段,读取blob到本地文件
版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/7407158 写入本地文件到数...
1354 0
|
2月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
185 64
|
2天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
30 11