• Oracle 排序规则


    <pre name="code" class="html">SQL> select * from t1 where id>=1 and id<=20;
    
    ID	   A1	      A2	 A3
    ---------- ---------- ---------- ----------
    1	   1	      1 	 a1
    2	   2	      2 	 a2
    3	   3	      3 	 a3
    4	   4	      4 	 a4
    5	   5	      5 	 a5
    6	   6	      6 	 a6
    7	   7	      7 	 a7
    8	   8	      8 	 a8
    9	   9	      9 	 a9
    10	   10	      10	 a10
    11	   11	      11	 a11
    12	   12	      12	 a12
    13	   13	      13	 a13
    14	   14	      14	 a14
    15	   15	      15	 a15
    16	   16	      16	 a16
    17	   17	      17	 a17
    18	   18	      18	 a18
    19	   19	      19	 a19
    20	   20	      20	 a20
    
    已选择20行。
    
    
    
    
    SQL>  explain plan for select id from t1 where rownum<20;
    
    已解释。
    
    SQL> select * from table(dbms_xplan.display());
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Plan hash value: 3581814200
    
    ---------------------------------------------------------------------------------
    | Id  | Operation	 | Name 	| Rows	| Bytes | Cost (%CPU)| Time	|
    ---------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT |		|    19 |   209 |     1   (0)| 00:00:01 |
    |*  1 |  COUNT STOPKEY	 |		|	|	|	     |		|
    |   2 |   INDEX FULL SCAN| SYS_C0022200 |    19 |   209 |     1   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - filter(ROWNUM<20)
    
    已选择14行。
    
    
    
     INDEX FULL SCAN 返回数据有序:
    
    SQL> select id from t1 where rownum<20;
    
    ID
    ----------
    1
    10
    100
    1000
    10000
    1001
    1002
    1003
    1004
    1005
    1006
    1007
    1008
    1009
    101
    1010
    1011
    1012
    1013
    
    已选择19行。
    
    
    不走索引,随机读:
    SQL> select * from table(dbms_xplan.display());
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    Plan hash value: 3836375644
    
    ---------------------------------------------------------------------------
    | Id  | Operation	   | Name | Rows  | Bytes | Cost (%CPU)| Time	  |
    ---------------------------------------------------------------------------
    |   0 | SELECT STATEMENT   |	  |    19 |   836 |	2   (0)| 00:00:01 |
    |*  1 |  COUNT STOPKEY	   |	  |	  |	  |	       |	  |
    |   2 |   TABLE ACCESS FULL| T1   |    19 |   836 |	2   (0)| 00:00:01 |
    ---------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    ---------------------------------------------------
    
       1 - filter(ROWNUM<20)
    
    已选择14行。
    
    
    SQL> select * from t1 where rownum<20;
    
    ID	   A1	      A2	 A3
    ---------- ---------- ---------- ----------
    495	   495	      495	 a495
    496	   496	      496	 a496
    497	   497	      497	 a497
    498	   498	      498	 a498
    499	   499	      499	 a499
    500	   500	      500	 a500
    501	   501	      501	 a501
    502	   502	      502	 a502
    503	   503	      503	 a503
    504	   504	      504	 a504
    505	   505	      505	 a505
    
    ID	   A1	      A2	 A3
    ---------- ---------- ---------- ----------
    506	   506	      506	 a506
    507	   507	      507	 a507
    508	   508	      508	 a508
    509	   509	      509	 a509
    510	   510	      510	 a510
    511	   511	      511	 a511
    512	   512	      512	 a512
    513	   513	      513	 a513
    
    已选择19行
    
    
    
    
    
    排序规则:
    
    
    
    
    SQL> select id from t1 where rownum<20;
    
    ID
    ----------
    1
    10
    100
    1000
    10000
    1001
    1002
    1003
    1004
    1005
    1006
    1007
    1008
    1009
    101
    1010
    1011
    1012
    1013
    
    已选择19行。
    
    
    SQL> select * from ( select id from t1 where rownum<20) order by id;
    
    ID
    ----------
    1
    10
    100
    1000
    10000
    1001
    1002
    1003
    1004
    1005
    1006
    1007
    1008
    1009
    101
    1010
    1011
    1012
    1013
    
    已选择19行。
    
    
    SQL> select * from (select * from t1 order by id ) where rownum<20;
    
    ID	   A1	      A2	 A3
    ---------- ---------- ---------- ----------
    1	   1	      1 	 a1
    10	   10	      10	 a10
    100	   100	      100	 a100
    1000	   1000       1000	 a1000
    10000	   10000      10000	 a10000
    1001	   1001       1001	 a1001
    1002	   1002       1002	 a1002
    1003	   1003       1003	 a1003
    1004	   1004       1004	 a1004
    1005	   1005       1005	 a1005
    1006	   1006       1006	 a1006
    1007	   1007       1007	 a1007
    1008	   1008       1008	 a1008
    1009	   1009       1009	 a1009
    101	   101	      101	 a101
    1010	   1010       1010	 a1010
    1011	   1011       1011	 a1011
    1012	   1012       1012	 a1012
    1013	   1013       1013	 a1013
    
    已选择19行。
    
    SQL>  select * from (select * from t1 where id<100 order by id) where rownum<20;
    
    ID	   A1	      A2	 A3
    ---------- ---------- ---------- ----------
    1	   1	      1 	 a1
    10	   10	      10	 a10
    11	   11	      11	 a11
    12	   12	      12	 a12
    13	   13	      13	 a13
    14	   14	      14	 a14
    15	   15	      15	 a15
    16	   16	      16	 a16
    17	   17	      17	 a17
    18	   18	      18	 a18
    19	   19	      19	 a19
    2	   2	      2 	 a2
    20	   20	      20	 a20
    21	   21	      21	 a21
    22	   22	      22	 a22
    23	   23	      23	 a23
    24	   24	      24	 a24
    25	   25	      25	 a25
    26	   26	      26	 a26
    
    已选择19行。
    
    


    
       
    
    
  • 相关阅读:
    C语言II博客作业01
    vscode使用相关配置
    Ubuntu配置教程
    编译原理复习
    误差与过拟合
    机器学习分类
    SQL语句使用详解
    CRC模2除法
    数据链路层之差错控制(检错编码和纠错编码)->(奇偶校验码、CRC循环冗余码、海明码)
    封装成帧、帧定界、帧同步、透明传输(字符计数法、字符串的首尾填充法、零比特填充的首尾标志法、违规编码法)
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199728.html
Copyright © 2020-2023  润新知