select * from table按照什么排序啊 默认order by什么 我看了下项目中的DB 也不是按主键来排的呀。
是不是和什么表关联有关系?新手求解释。。

解决方案 »

  1.   

    select * from table
    --------------------
    默认是不排序的。是Oracle根据数据文件记录顺序读取。加快效率
      

  2.   

    是按往table表里插入记录的顺序来读取的。
    不是主键。你可以试一下。
      

  3.   

    默认不排序,想排序的话用order by就可以了,这样可以确保你想要的顺序
      

  4.   

    默认没有排序,意味着多次搜索出来的顺序可能是不一样的,要排序一定要指定order by.
      

  5.   

    这个很关键啊 是不是每次select * from 搜索的结果顺序都不一样呢?
    要是这样的话就是oracle内部的操作了 现在的问题就成了结果不一样 那select * from就没有特定的规则
    结果一样select * from就有特定的规则,这规则是什么?
      

  6.   


    好像是按插入顺序,但不确定create table  t(id varchar(10));
    insert into t values ('1');
    insert into t values ('4');
    insert into t values ('3');
    insert into t values ('2');
    insert into t values ('1');
    insert into t values ('7');
    insert into t values ('6');
    insert into t values ('6');
    commit;
    SQL> select * from t;
     
    ID
    ----------
    1
    4
    3
    2
    1
    7
    6
    6
     
    8 rows selected
      

  7.   

    好像是按插入顺序,但不确定
    create table  t(id varchar(10));
    insert into t values ('1');
    insert into t values ('4');
    insert into t values ('3');
    insert into t values ('2');
    insert into t values ('1');
    insert into t values ('7');
    insert into t values ('6');
    insert into t values ('6');
    commit;SQL> select * from t;
     
    ID
    ----------
    1
    4
    3
    2
    1
    7
    6
    6
      

  8.   

    主要是根据数据的存储位置排序:
    1、对于非分区表、无索引、无并行的情况下oracle默认是按照extent_id和rowid来联合排序,即order by extent_id,rowid
    2、对于分区表、无索引、无并行的情况下oracle默认是按照partition_position、extent_id和rowid来联合排序,即order by partition_position,extent_id,rowid 
      

  9.   

    其实是用 rowid来排序的select a.*,a.rowid from test a...你试下就知道了...
      

  10.   

    那rowid起不起作用呢 按插入顺序排序的话
      

  11.   

    何必研究这个呢,关系性数据库本身的概念就在于数据记录本身是无序的,既然你不写order by,那就是不要求这个顺序。我在实践中的结果就是,每次查询得到的记录顺序是不一样的,有时候看起来是插入顺序,但数据多了就发现不是这样的。