注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle、MySQL资料及经验

.

 
 
 

日志

 
 

一条sql中同时查max(列),min(列)的改写  

2013-12-12 09:57:40|  分类: 优化 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

如下库版本是11.2.0.1.0
SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 12 09:40:17 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

 

需要优化的sql及执行计划:
SCOTT@testdb> select max(empno),min(empno) from emp;

MAX(EMPNO) MIN(EMPNO)
---------- ----------
      7934       7369


Execution Plan
----------------------------------------------------------
Plan hash value: 2937609675

---------------------------------------------------------------------------
| Id  | Operation        | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT |        |     1 |     4 |     1   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE  |        |     1 |     4 |            |          |
|   2 |   INDEX FULL SCAN| PK_EMP |    14 |    56 |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------

 

 


改写后的sql及执行计划:
SCOTT@testdb> select * from (select max(empno) from emp),(select min(empno) from emp);

MAX(EMPNO) MIN(EMPNO)
---------- ----------
      7934       7369


Execution Plan
----------------------------------------------------------
Plan hash value: 2888935582

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |     1 |    26 |     2   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |        |     1 |    26 |     2   (0)| 00:00:01 |
|   2 |   VIEW                       |        |     1 |    13 |     1   (0)| 00:00:01 |
|   3 |    SORT AGGREGATE            |        |     1 |     4 |            |          |
|   4 |     INDEX FULL SCAN (MIN/MAX)| PK_EMP |     1 |     4 |     1   (0)| 00:00:01 |
|   5 |   VIEW                       |        |     1 |    13 |     1   (0)| 00:00:01 |
|   6 |    SORT AGGREGATE            |        |     1 |     4 |            |          |
|   7 |     INDEX FULL SCAN (MIN/MAX)| PK_EMP |     1 |     4 |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------


sql也可以这么改写,更清晰一些:
SCOTT@testdb> select max_empno, min_empno
  2    from (select max(empno) max_empno from emp),
  3         (select min(empno) min_empno from emp);

 MAX_EMPNO  MIN_EMPNO
---------- ----------
      7934       7369


Execution Plan
----------------------------------------------------------
Plan hash value: 2888935582

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |     1 |    26 |     2   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                |        |     1 |    26 |     2   (0)| 00:00:01 |
|   2 |   VIEW                       |        |     1 |    13 |     1   (0)| 00:00:01 |
|   3 |    SORT AGGREGATE            |        |     1 |     4 |            |          |
|   4 |     INDEX FULL SCAN (MIN/MAX)| PK_EMP |     1 |     4 |     1   (0)| 00:00:01 |
|   5 |   VIEW                       |        |     1 |    13 |     1   (0)| 00:00:01 |
|   6 |    SORT AGGREGATE            |        |     1 |     4 |            |          |
|   7 |     INDEX FULL SCAN (MIN/MAX)| PK_EMP |     1 |     4 |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------

 

  评论这张
 
阅读(299)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018