zoukankan      html  css  js  c++  java
  • 【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。

  • 相关阅读:
    记录一次nginx的upstream的配置信息
    nginx-1.12.1编译参数详情
    nginx安装ngx_lua_waf防护
    MYSQL增加tmp_table_size 的操作
    windows安装zabbix监控
    mysql 授权
    python基础知识-集合,列表,元组间的相互装换
    python基础知识笔记-集合
    Python基础笔记-元祖
    python基础知识-列表的排序问题
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3233669.html
Copyright © 2011-2022 走看看