前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Oracle】-【插入读取顺序】-插入读取之间的顺序关系

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

作者头像
bisal
发布2019-01-29 10:12:37
7480
发布2019-01-29 10:12:37
举报

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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年08月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档