【DB笔试面试620】在Oracle中,举例说明“集合操作关联转变(Set Join Conversion)”查询转换。

  • 2019 年 10 月 10 日
  • 筆記

题目部分

在Oracle中,举例说明“集合操作关联转变(Set Join Conversion)”查询转换。

答案部分

LHR@orclasm > SELECT  * FROM SCOTT.EMP A WHERE A.EMPNO>7469    2  MINUS    3  SELECT  * FROM SCOTT.EMP A WHERE A.EMPNO>7839;    Execution Plan  ----------------------------------------------------------  Plan hash value: 3686975449    ----------------------------------------------------------------------------  | Id  | Operation           | Name | Rows  | Bytes | Cost (%CPU)| Time     |  ----------------------------------------------------------------------------  |   0 | SELECT STATEMENT    |      |    13 |  1566 |     8  (63)| 00:00:01 |  |   1 |  MINUS              |      |       |       |            |          |  |   2 |   SORT UNIQUE       |      |    13 |  1131 |     4  (25)| 00:00:01 |  |*  3 |    TABLE ACCESS FULL| EMP  |    13 |  1131 |     3   (0)| 00:00:01 |  |   4 |   SORT UNIQUE       |      |     5 |   435 |     4  (25)| 00:00:01 |  |*  5 |    TABLE ACCESS FULL| EMP  |     5 |   435 |     3   (0)| 00:00:01 |  ----------------------------------------------------------------------------    Predicate Information (identified by operation id):  ---------------------------------------------------       3 - filter("A"."EMPNO">7469)     5 - filter("A"."EMPNO">7839)    Note  -----     - dynamic sampling used for this statement (level=2)      Statistics  ----------------------------------------------------------           61  recursive calls            5  db block gets           34  consistent gets            0  physical reads         2536  redo size         1357  bytes sent via SQL*Net to client          520  bytes received via SQL*Net from client            2  SQL*Net roundtrips to/from client            2  sorts (memory)            0  sorts (disk)            8  rows processed    LHR@orclasm >  LHR@orclasm > ALTER SESSION SET "_CONVERT_SET_TO_JOIN"=TRUE;    Session altered.    LHR@orclasm >  LHR@orclasm > SELECT  * FROM SCOTT.EMP A WHERE A.EMPNO>7469    2  MINUS    3  SELECT  * FROM SCOTT.EMP A WHERE A.EMPNO>7839;    Execution Plan  ----------------------------------------------------------  Plan hash value: 3353202012    ---------------------------------------------------------------------------  | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |  ---------------------------------------------------------------------------  |   0 | SELECT STATEMENT   |      |    13 |  2262 |     7  (15)| 00:00:01 |  |*  1 |  HASH JOIN ANTI    |      |    13 |  2262 |     7  (15)| 00:00:01 |  |*  2 |   TABLE ACCESS FULL| EMP  |    13 |  1131 |     3   (0)| 00:00:01 |  |*  3 |   TABLE ACCESS FULL| EMP  |     5 |   435 |     3   (0)| 00:00:01 |  ---------------------------------------------------------------------------    Predicate Information (identified by operation id):  ---------------------------------------------------       1 - access("A"."EMPNO"="A"."EMPNO" AND                SYS_OP_MAP_NONNULL("A"."ENAME")=SYS_OP_MAP_NONNULL("A"."ENAME") AND                SYS_OP_MAP_NONNULL("A"."JOB")=SYS_OP_MAP_NONNULL("A"."JOB") AND                SYS_OP_MAP_NONNULL("A"."MGR")=SYS_OP_MAP_NONNULL("A"."MGR") AND                SYS_OP_MAP_NONNULL("A"."HIREDATE")=SYS_OP_MAP_NONNULL("A"."HIREDATE")                AND SYS_OP_MAP_NONNULL("A"."SAL")=SYS_OP_MAP_NONNULL("A"."SAL") AND                SYS_OP_MAP_NONNULL("A"."COMM")=SYS_OP_MAP_NONNULL("A"."COMM") AND                SYS_OP_MAP_NONNULL("A"."DEPTNO")=SYS_OP_MAP_NONNULL("A"."DEPTNO"))     2 - filter("A"."EMPNO">7469)     3 - filter("A"."EMPNO">7839)    Note  -----     - dynamic sampling used for this statement (level=2)      Statistics  ----------------------------------------------------------           61  recursive calls            5  db block gets           34  consistent gets            0  physical reads         2552  redo size         1347  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)            8  rows processed  

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