Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【DB笔试面试618】在Oracle中,“OR扩展”可以有查询转换吗?

【DB笔试面试618】在Oracle中,“OR扩展”可以有查询转换吗?

作者头像
AiDBA宝典
发布于 2019-09-29 08:09:42
发布于 2019-09-29 08:09:42
6.7K00
代码可运行
举报
运行总次数:0
代码可运行

题目部分

在Oracle中,“OR扩展”可以有查询转换吗?

答案部分

同一字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LHR@orclasm > SELECT  * FROM SCOTT.EMP A WHERE A.EMPNO =7369 OR A.EMPNO=1;

     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20


Execution Plan
----------------------------------------------------------
Plan hash value: 2355049923

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |     1 |    87 |     2   (0)| 00:00:01 |
|   1 |  INLIST ITERATOR             |        |       |       |            |          |
|   2 |   TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    87 |     2   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     3   (0)| 00:00:01 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("A"."EMPNO"=1 OR "A"."EMPNO"=7369)

Note
-----
   - dynamic sampling used for this statement (level=2)


Statistics
----------------------------------------------------------
         23  recursive calls
          5  db block gets
          3  consistent gets
          0  physical reads
       1628  redo size
       1025  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

LHR@orclasm > SELECT /*+OR_EXPAND(A EMPNO)*/ * FROM SCOTT.EMP A WHERE A.EMPNO =7369 OR A.EMPNO=1; 

     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20


Execution Plan
----------------------------------------------------------
Plan hash value: 2259546459

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |     2 |   174 |     2   (0)| 00:00:01 |
|   1 |  CONCATENATION               |        |       |       |            |          |
|   2 |   TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    87 |     1   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1   (0)| 00:00:01 |
|   4 |   TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    87 |     1   (0)| 00:00:01 |
|*  5 |    INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("A"."EMPNO"=1)
   5 - access("A"."EMPNO"=7369)

Note
-----
   - dynamic sampling used for this statement (level=2)


Statistics
----------------------------------------------------------
         23  recursive calls
          4  db block gets
          3  consistent gets
          0  physical reads
       1560  redo size
       1021  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

LHR@orclasm > 

不同字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LHR@orclasm > SELECT  * FROM SCOTT.EMP A WHERE A.EMPNO =7369 OR A.ENAME='DBA';

     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20


Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |    87 |     3   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| EMP  |     1 |    87 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("A"."EMPNO"=7369 OR "A"."ENAME"='DBA')

Note
-----
   - dynamic sampling used for this statement (level=2)


Statistics
----------------------------------------------------------
         28  recursive calls
          4  db block gets
         16  consistent gets
          0  physical reads
       1544  redo size
       1021  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

LHR@orclasm > SELECT  /*+OR_EXPAND(A EMPNO)*/ * FROM SCOTT.EMP A WHERE A.EMPNO =7369 OR A.ENAME='DBA';

     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20


Execution Plan
----------------------------------------------------------
Plan hash value: 2453891490

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |     2 |   174 |     3   (0)| 00:00:01 |
|   1 |  CONCATENATION               |        |       |       |            |          |
|*  2 |   TABLE ACCESS FULL          | EMP    |     1 |    87 |     2   (0)| 00:00:01 |
|*  3 |   TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    87 |     1   (0)| 00:00:01 |
|*  4 |    INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - filter("A"."ENAME"='DBA')
   3 - filter(LNNVL("A"."ENAME"='DBA'))
   4 - access("A"."EMPNO"=7369)

Note
-----
   - dynamic sampling used for this statement (level=2)


Statistics
----------------------------------------------------------
         31  recursive calls
          4  db block gets
         25  consistent gets
          0  physical reads
       1560  redo size
       1021  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【DB笔试面试620】在Oracle中,举例说明“集合操作关联转变(Set Join Conversion)”查询转换。
在Oracle中,举例说明“集合操作关联转变(Set Join Conversion)”查询转换。
AiDBA宝典
2019/09/29
4540
【DB笔试面试619】在Oracle中,举例说明“连接因式分解(Join factorization,JF)”查询转换。
在Oracle中,举例说明“连接因式分解(Join factorization,JF)”查询转换。
AiDBA宝典
2019/09/29
3850
【DB笔试面试593】在Oracle中,表的访问方式有哪几种?
访问表的方式也叫优化器访问路径,主要有3种访问路径:全表扫描(FULL TABLE SCAN,FTS)、索引扫描(INDEX SCAN)和ROWID访问。
AiDBA宝典
2019/09/29
1.3K0
【DB笔试面试593】在Oracle中,表的访问方式有哪几种?
【DB笔试面试617】在Oracle中,和“表达式和条件评估”相关的查询转换有哪些?
♣ 题目部分 在Oracle中,和“表达式和条件评估”相关的查询转换有哪些? ♣ 答案部分 (一)逻辑转换 LHR@orclasm > SELECT /*+FULL(A) FULL(B)*/ * FROM SCOTT.EMP A,SCOTT.DEPT B WHERE A.DEPTNO=B.DEPTNO AND B.DEPTNO=20; Execution Plan ---------------------------------------------------------- Plan
AiDBA宝典
2019/09/29
8340
【DB笔试面试616】在Oracle中,和“消除”相关的查询转换有哪些?
(四)公共子表达式消除(Common Sub-expression Elimination,CSE)
AiDBA宝典
2019/09/29
1.2K0
【DB笔试面试570】在Oracle中,SQL优化在写法上有哪些常用的方法?
一般在书写SQL时需要注意哪些问题,如何书写可以提高查询的效率呢?可以从以下几个方面去考虑:
AiDBA宝典
2019/09/29
3.7K0
Oracle之SQL优化专题03-如何看懂SQL的执行计划
专题第一篇《Oracle之SQL优化专题01-查看SQL执行计划的方法》讲到了查看SQL执行计划的方法,并介绍了各种方法的应用场景,那么这一篇就主要介绍下如何看懂SQL的执行计划。毕竟如果SQL的执行计划都看不懂,那优化就无从谈起了。
Alfred Zhao
2020/02/19
6870
【DB笔试面试555】在Oracle中,全文索引的作用是什么?
Oracle全文索引使Oracle具备了强大的文本检索能力和智能化的文本管理能力。Oracle将全文检索功能做为内置功能提供给用户,使得用户在创建数据库实例时自动安装全文检索。
AiDBA宝典
2019/09/29
9180
【DB笔试面试475】分区表性能注意事项有哪些?
② 在设计分区表时,避免数据都进入默认分区,从而导致出现默认分区超大或各个分区大小严重不均衡的情况,失去分区表的意义。
AiDBA宝典
2019/09/30
5770
【DB笔试面试615】在Oracle中,和谓词相关的查询转换有哪些?
♣ 题目部分 在Oracle中,和谓词相关的查询转换有哪些? ♣ 答案部分 (一)过滤谓词推入 LHR@orclasm > SELECT * FROM (SELECT * FROM VW_SVM_LHR V) WV WHERE WV.JOB='DBA'; -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes |
AiDBA宝典
2019/09/29
8550
【DB笔试面试614】在Oracle中,和视图相关的查询转换有哪些?
♣ 题目部分 在Oracle中,和视图相关的查询转换有哪些? ♣ 答案部分 (一)简单视图合并 CREATE OR REPLACE VIEW VW_SVM_LHR AS SELECT * FROM SCOTT.EMP WHERE EMPNO<>7369; SELECT * FROM VW_SVM_LHR V WHERE V.JOB='DBA'; Execution Plan ---------------------------------------------------------- Plan ha
AiDBA宝典
2019/09/29
2K0
【DB笔试面试646】在Oracle中,什么是基数(Cardinality)和可选择率(Selectivity)?
在Oracle中,什么是基数(Cardinality)和可选择率(Selectivity)?
AiDBA宝典
2019/09/29
8820
【DB笔试面试646】在Oracle中,什么是基数(Cardinality)和可选择率(Selectivity)?
【DB笔试面试622】在Oracle中,说说COUNT(*)计算行数有哪些优化手段?
位图索引可以按很高密度存储数据,因此往往比B树索引小很多,前提是在基数比较小(列重复度比较高)的情况下。位图索引是保存空值的,因此可以在COUNT中利用。位图索引不太适合OLTP类型数据库。物化视图是应用在数据要求不怎么及时的场景下。若表频繁更新,则不适合缓存结果集。
AiDBA宝典
2019/09/29
9800
【DB笔试面试621】在Oracle中,举例说明“DISTINCT配置(Distinct Placement,DP)”查询转换。
在Oracle中,举例说明“DISTINCT配置(Distinct Placement,DP)”查询转换。
AiDBA宝典
2019/09/29
5870
【DB笔试面试258】在Oracle中,执行计划里的access和filter有什么区别(下)?
有关access和filter的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2141522/
AiDBA宝典
2019/09/30
1.2K0
【DB笔试面试258】在Oracle中,执行计划里的access和filter有什么区别(上)?
一般而言,access表示这个谓词条件的值将会影响数据的访问路径(表还是索引);filter表示谓词条件的值不会影响数据的访问路劲,只起到过滤的作用。NOT IN或MIN函数等容易产生filter操作。
AiDBA宝典
2019/09/30
1.4K0
【DB笔试面试258】在Oracle中,执行计划里的access和filter有什么区别(上)?
【DB笔试面试677】在Oracle中,对于一个NUMBER(1)的列,若WHERE条件是大于3和大于等于4,这二者是否等价?
在Oracle中,对于一个NUMBER(1)的列,如果查询中的WHERE条件分别是大于3和大于等于4,那么这二者是否等价?
AiDBA宝典
2019/11/05
2.4K0
【DB笔试面试677】在Oracle中,对于一个NUMBER(1)的列,若WHERE条件是大于3和大于等于4,这二者是否等价?
【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?
AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性。启用AUTOTRACE后,SQL*Plus会自动收集执行过的SQL语句的执行计划、性能统计数据等,并在语句执行结束后显示在SQL*Plus中。
AiDBA宝典
2019/09/29
6290
【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?
【DB笔试面试633】在Oracle中,什么是待定的统计信息(Pending Statistic)?
在数据库系统运维中,DBA常常希望维持SQL执行计划的稳定。很多DBA和开发人员对于Hint的依赖,很大程度上也是源于在CBO情况下,执行计划对于统计量过于依赖,容易形成不稳定执行计划。所以,SQL语句执行计划的稳定性,就变成统计信息的稳定性问题。更进一步,就是新的统计信息更新,无论是手动收集还是自动收集,能否促进SQL语句生成更高效的执行计划。所以,一种思路是:在新的统计信息收集生成时,暂时不要生效投入执行计划生成。等待最后确认统计信息正确之后,再投入生产环境。
AiDBA宝典
2019/09/29
7170
【DB笔试面试811】在Oracle中,什么是闪回事务查询(Flashback Transaction Query)?
在Oracle中,什么是闪回事务查询(Flashback Transaction Query)?
AiDBA宝典
2020/06/04
6400
推荐阅读
【DB笔试面试620】在Oracle中,举例说明“集合操作关联转变(Set Join Conversion)”查询转换。
4540
【DB笔试面试619】在Oracle中,举例说明“连接因式分解(Join factorization,JF)”查询转换。
3850
【DB笔试面试593】在Oracle中,表的访问方式有哪几种?
1.3K0
【DB笔试面试617】在Oracle中,和“表达式和条件评估”相关的查询转换有哪些?
8340
【DB笔试面试616】在Oracle中,和“消除”相关的查询转换有哪些?
1.2K0
【DB笔试面试570】在Oracle中,SQL优化在写法上有哪些常用的方法?
3.7K0
Oracle之SQL优化专题03-如何看懂SQL的执行计划
6870
【DB笔试面试555】在Oracle中,全文索引的作用是什么?
9180
【DB笔试面试475】分区表性能注意事项有哪些?
5770
【DB笔试面试615】在Oracle中,和谓词相关的查询转换有哪些?
8550
【DB笔试面试614】在Oracle中,和视图相关的查询转换有哪些?
2K0
【DB笔试面试646】在Oracle中,什么是基数(Cardinality)和可选择率(Selectivity)?
8820
【DB笔试面试622】在Oracle中,说说COUNT(*)计算行数有哪些优化手段?
9800
【DB笔试面试621】在Oracle中,举例说明“DISTINCT配置(Distinct Placement,DP)”查询转换。
5870
【DB笔试面试258】在Oracle中,执行计划里的access和filter有什么区别(下)?
1.2K0
【DB笔试面试258】在Oracle中,执行计划里的access和filter有什么区别(上)?
1.4K0
【DB笔试面试677】在Oracle中,对于一个NUMBER(1)的列,若WHERE条件是大于3和大于等于4,这二者是否等价?
2.4K0
【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?
6290
【DB笔试面试633】在Oracle中,什么是待定的统计信息(Pending Statistic)?
7170
【DB笔试面试811】在Oracle中,什么是闪回事务查询(Flashback Transaction Query)?
6400
相关推荐
【DB笔试面试620】在Oracle中,举例说明“集合操作关联转变(Set Join Conversion)”查询转换。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验