分析函数改写SQL

发布时间:2020-08-08 09:28:20 作者:wwjfeng
来源:ITPUB博客 阅读:117

1.old sql:

SELECT a.object_id,
       a.object_name,
       b.max_id,
       b.min_id
  FROM HH a,
       (  SELECT owner, MAX (object_id) AS max_id, MIN (object_id) AS min_id
            FROM HH
        GROUP BY owner) b
 WHERE     a.last_ddl_time BETWEEN TO_DATE ('2010-01-01', 'yyyy-mm-dd')
                               AND TO_DATE ('2012-01-01', 'yyyy-mm-dd')
       AND a.owner IN ('MESDEV', 'RPTDEV')
       and a.owner=b.owner;


Elapsed: 00:00:25.50
Execution Plan
----------------------------------------------------------
-----------------------------------------------------------------
| Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)|
-----------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |     2 |   254 |   433   (2)|
|   1 |  HASH GROUP BY      |      |     2 |   254 |   433   (2)|
|   2 |   HASH JOIN         |      |     2 |   254 |   432   (1)|
|   3 |    TABLE ACCESS FULL| HH   |     2 |   194 |   216   (1)|
|   4 |    TABLE ACCESS FULL| HH   |   661 | 19830 |   216   (1)|
-----------------------------------------------------------------
Note
-----
   - 'PLAN_TABLE' is old version
Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       1904  consistent gets
          0  physical reads
          0  redo size
     111609  bytes sent via SQL*Net to client
       2670  bytes received via SQL*Net from client
        200  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       2977  rows processed

2.new sql

SELECT a.object_id,
       a.object_name,
       a.max_id,
       a.min_id
  FROM (SELECT object_id,
               object_name,
               last_ddl_time,
               MAX (object_id) OVER (PARTITION BY owner) AS max_id,
               MIN (object_id) OVER (PARTITION BY owner) AS min_id
          FROM HH
         WHERE owner IN ('MESDEV', 'RPTDEV')) a
 WHERE a.last_ddl_time BETWEEN TO_DATE ('2010-01-01', 'yyyy-mm-dd')
                           AND TO_DATE ('2012-01-01', 'yyyy-mm-dd');
Elapsed: 00:00:00.09
Execution Plan
----------------------------------------------------------
-----------------------------------------------------------------
| Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)|
-----------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |   661 | 75354 |   217   (2)|
|   1 |  VIEW               |      |   661 | 75354 |   217   (2)|
|   2 |   WINDOW SORT       |      |   661 | 64117 |   217   (2)|
|   3 |    TABLE ACCESS FULL| HH   |   661 | 64117 |   216   (1)|
-----------------------------------------------------------------
Note
-----
   - 'PLAN_TABLE' is old version
Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
        952  consistent gets
          0  physical reads
          0  redo size
     108149  bytes sent via SQL*Net to client
       2670  bytes received via SQL*Net from client
        200  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
       2977  rows processed


推荐阅读:
  1. Oracle分析函数
  2. SQL优化之基于SQL特征的改写

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql 函数 分析

上一篇:Python为何如此优秀?斯坦福教授告诉你!

下一篇:Oracle Cloud (DBaaS): Migrating Databases to Oracle Cloud Using RMAN Backup

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》