【Oracle】-【插入读取顺序】-插入读取之间的顺序关系
来源:互联网 发布:fluc网络测试仪 编辑:程序博客网 时间:2024/05/22 19:15
【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.
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。
- 1楼 a3liwei1232014-02-12 10:47发表 [回复]
- 使用 ROWID,不一定总能顺序插入数据吧
- Re: bisal2014-03-09 17:08发表 [回复]
- 回复a3liwei123:我理解ROWID是Oracle自动为每行记录分配的一个唯一标识,插入时是由Oracle根据内部算法,找到可以存放的块,然后再将数据放入其中,因此你存入1,2,3,未必就是按顺序插入的,应该说是随机的,所以读的时候若关注顺序,则建议使用ORDER BY显性排序,这样才能达到顺序读取的目的了。
- 【Oracle】-【插入读取顺序】-插入读取之间的顺序关系
- 【Oracle】-【插入读取顺序】-插入读取之间的顺序关系
- 再次明确Oracle插入与读取的顺序问题
- ORACLE中数据插入的顺序
- 顺序表的插入
- 顺序表的插入
- 顺序表的插入
- 插入记录的顺序问题!
- 顺序表的插入运算
- C 单链表的顺序插入
- 【应用】顺序表的插入
- 有序顺序表的插入
- 有序顺序表的插入
- 单链表的读取插入删除
- 读取顺序存储的文件
- bash 设置的读取顺序
- Struts2读取配置文件的顺序
- web.xml的读取顺序
- 数据挖掘系列(3)--关联规则评价
- 腾讯、阿里2014实习招聘面经
- Border-radius
- 20140517,香港专家2014免费远程培训——基于度量的战略方针
- Web Js判断键盘出发事件
- 【Oracle】-【插入读取顺序】-插入读取之间的顺序关系
- 数据挖掘系列(4)使用weka做关联规则挖掘
- crtmpserver 基本流程分析
- 第十一周上机项目二职员有薪水了
- 在Win7 下Vistual Studio 2010(VS2010)中安装 MVC3.0详细方法
- 《网络通信程序设计》课程综合报告的要求与格式
- 关于linux下为文件赋予权限,使用chmod
- Week2 Assignment - Quicksort - Stanford - Algorithm: Design and Analysis Part I
- 数据挖掘系列(5)使用mahout做海量数据关联规则挖掘