我有一个表,有3个字段,id(主键),telno(号码),time(时间)
应用是按时间顺序插进去的,但是我发现select出来的数据却不是按照time来排序的,那么就说明了数据的没有按照时间顺序写入物理位置。
请问如何让select(不带order by)出来的数据可以按照time来排序呢?另外建表时,可以选择构成的方法为“堆积”,“索引”,“外部”,物理排序是否和这个选择有关?
应用是按时间顺序插进去的,但是我发现select出来的数据却不是按照time来排序的,那么就说明了数据的没有按照时间顺序写入物理位置。
请问如何让select(不带order by)出来的数据可以按照time来排序呢?另外建表时,可以选择构成的方法为“堆积”,“索引”,“外部”,物理排序是否和这个选择有关?
默认的顺序是按rowid的,不能保证按time排序
rowid 来的你的时间字段是自动sysdate 来插入的?
还是什么
不是sysdate,是insert中写明的不想用order by,耗时,有什么办法实现select出来的数据按照时间先后排序好,为time加索引可以实现吗?
我使用sqlserver簇索引就可以实现啊?!oracle应该有办法实现的
你要按照time排序的话只能是用order by了
但oracle却是以rowid顺序插入的,rowid却不能顺序的得到(比如第一次是1,第二次可能不会是2).我也想知道如何不用order by得到有序的结果。
我也觉得郁闷……
如果数据量很大(上千万的数据量),可以采用分区表撒,这样order by 的效率就高了……
-- 此时:表中的记录就应该默认是按时间排序的-- 示例如下:
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行。