我有一个表,有3个字段,id(主键),telno(号码),time(时间)
应用是按时间顺序插进去的,但是我发现select出来的数据却不是按照time来排序的,那么就说明了数据的没有按照时间顺序写入物理位置。
请问如何让select(不带order by)出来的数据可以按照time来排序呢?另外建表时,可以选择构成的方法为“堆积”,“索引”,“外部”,物理排序是否和这个选择有关?

解决方案 »

  1.   

    没办法.只能用order by.
    默认的顺序是按rowid的,不能保证按time排序
      

  2.   


    rowid 来的你的时间字段是自动sysdate 来插入的?
    还是什么
      

  3.   


    不是sysdate,是insert中写明的不想用order by,耗时,有什么办法实现select出来的数据按照时间先后排序好,为time加索引可以实现吗?
    我使用sqlserver簇索引就可以实现啊?!oracle应该有办法实现的
      

  4.   

    这个是oracle内部存放的顺序
    你要按照time排序的话只能是用order by了 
      

  5.   

    sql server是按插入的顺序存储的,select出的当然是有序的。
    但oracle却是以rowid顺序插入的,rowid却不能顺序的得到(比如第一次是1,第二次可能不会是2).我也想知道如何不用order by得到有序的结果。
      

  6.   

    order by 真的很耗时,但是好像没其他方法了。
    我也觉得郁闷……
      

  7.   

    你说效率低,是你的数据表很大吗?
    如果数据量很大(上千万的数据量),可以采用分区表撒,这样order by 的效率就高了……
      

  8.   

    -- 如果表中的记录是按时间的顺序插入的,而时间字段永远不更新,又没有产生“行迁移”操作的话,
    -- 此时:表中的记录就应该默认是按时间排序的-- 示例如下:
    scott@SZTYORA> select * from emp;     EMPNO ENAME                JOB                       MGR HIREDATE                   SAL       COMM     DEPTNO
    ---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ----------
          7369 SMITH                CLERK                    7902 1980-12-17 00:00:00        800            20
          7499 ALLEN                SALESMAN                 7698 1981-02-20 00:00:00       1600        300         30
          7521 WARD                 SALESMAN                 7698 1981-02-22 00:00:00       1250        500         30
          7566 JONES                MANAGER                  7839 1981-04-02 00:00:00       2975            20
          7654 MARTIN               SALESMAN                 7698 1981-09-28 00:00:00       1250       1400         30
          7698 BLAKE                MANAGER                  7839 1981-05-01 00:00:00       4000            30
          7782 CLARK                MANAGER                  7839 1981-06-09 00:00:00       4000            10
          7788 SCOTT                ANALYST                  7566 0087-07-13 00:00:00       4000            20
          7839 KING                 PRESIDENT                     1981-11-17 00:00:00       5000            10
          7844 TURNER               SALESMAN                 7698 1981-09-08 00:00:00       1500          0         30
          7876 ADAMS                CLERK                    7788 0087-07-13 00:00:00       1100            20
          7900 JAMES                CLERK                    7698 1981-12-03 00:00:00        950            30
          7902 FORD                 ANALYST                  7566 1981-12-03 00:00:00       3000            20
          7934 MILLER               CLERK                    7782 1982-01-23 00:00:00       1300            10已选择14行。scott@SZTYORA> create table emp2 as select * from emp order by hiredate;
    create public synonym EMP2 for scott.EMP2表已创建。scott@SZTYORA> select * from emp;     EMPNO ENAME                JOB                       MGR HIREDATE                   SAL       COMM     DEPTNO
    ---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ----------
          7369 SMITH                CLERK                    7902 1980-12-17 00:00:00        800            20
          7499 ALLEN                SALESMAN                 7698 1981-02-20 00:00:00       1600        300         30
          7521 WARD                 SALESMAN                 7698 1981-02-22 00:00:00       1250        500         30
          7566 JONES                MANAGER                  7839 1981-04-02 00:00:00       2975            20
          7654 MARTIN               SALESMAN                 7698 1981-09-28 00:00:00       1250       1400         30
          7698 BLAKE                MANAGER                  7839 1981-05-01 00:00:00       4000            30
          7782 CLARK                MANAGER                  7839 1981-06-09 00:00:00       4000            10
          7788 SCOTT                ANALYST                  7566 0087-07-13 00:00:00       4000            20
          7839 KING                 PRESIDENT                     1981-11-17 00:00:00       5000            10
          7844 TURNER               SALESMAN                 7698 1981-09-08 00:00:00       1500          0         30
          7876 ADAMS                CLERK                    7788 0087-07-13 00:00:00       1100            20
          7900 JAMES                CLERK                    7698 1981-12-03 00:00:00        950            30
          7902 FORD                 ANALYST                  7566 1981-12-03 00:00:00       3000            20
          7934 MILLER               CLERK                    7782 1982-01-23 00:00:00       1300            10已选择14行。scott@SZTYORA> select * from emp2;     EMPNO ENAME                JOB                       MGR HIREDATE                   SAL       COMM     DEPTNO
    ---------- -------------------- ------------------ ---------- ------------------- ---------- ---------- ----------
          7876 ADAMS                CLERK                    7788 0087-07-13 00:00:00       1100            20
          7788 SCOTT                ANALYST                  7566 0087-07-13 00:00:00       4000            20
          7369 SMITH                CLERK                    7902 1980-12-17 00:00:00        800            20
          7499 ALLEN                SALESMAN                 7698 1981-02-20 00:00:00       1600        300         30
          7521 WARD                 SALESMAN                 7698 1981-02-22 00:00:00       1250        500         30
          7566 JONES                MANAGER                  7839 1981-04-02 00:00:00       2975            20
          7698 BLAKE                MANAGER                  7839 1981-05-01 00:00:00       4000            30
          7782 CLARK                MANAGER                  7839 1981-06-09 00:00:00       4000            10
          7844 TURNER               SALESMAN                 7698 1981-09-08 00:00:00       1500          0         30
          7654 MARTIN               SALESMAN                 7698 1981-09-28 00:00:00       1250       1400         30
          7839 KING                 PRESIDENT                     1981-11-17 00:00:00       5000            10
          7900 JAMES                CLERK                    7698 1981-12-03 00:00:00        950            30
          7902 FORD                 ANALYST                  7566 1981-12-03 00:00:00       3000            20
          7934 MILLER               CLERK                    7782 1982-01-23 00:00:00       1300            10已选择14行。