数据库中的数据排列顺序  是不是按创建时间排列的?还是随机的 一旦创建后顺序有没有可能改变
  如 我从一个表中按行号从一到结尾在不排序的情况下取数据   是不是每次取出的都是一样的
     

解决方案 »

  1.   

    1, 数据库中的记录不一定是按照创建时间排序的,如果从来没有执行过删除操作,或者insert操作一直是用/*+ append*/ 方式处理的,插入的记录时按照时间顺序排列的,而一旦执行过delete,再次insert时就可能会插到之前的block中;
    2,你的说法是正确的。
      

  2.   

      数据库的数据排列物理上来讲是无序的,你说的行号大概是指PLSQL中的行号显示吧,那不是真正的序号,即使你不执行排序,每次取出的顺序是一样的,当然只是显示上的一样。
      

  3.   

    我现在碰上的问题是
        我要从一个几十万的表中取数据 一次取2500条  每次取的都是最早创建的数据(表中有一列是系统自动生成的创建时间)  每次循环取数据都order by一次  这样很慢  有没有更好的办法 解决问题
         不知道这样对问题的描述是不是清楚    在线等回答
      

  4.   

    搜Oracle with的用法with t as (select * from your_t order by sj)
    select * from t;
      

  5.   

    这张表上应该有个id字段做主键吧,建一个序列,用序列值填充id
    取记录的时候只要在id上界定一下即可
      

  6.   

    我想把取到的数据 都从原来的表中删掉  这样用with也行吗?
    如果建临时表 取数据会不会改变原来的 顺序  还有如果建临时表  这样临时表的插入删除数据也是一个大开销
    有没有人有更好的办法或者更具体的办法
      

  7.   

    那就在order by的时间列上建索引。试试