zoukankan      html  css  js  c++  java
  • 谓词推入演示

    create or replace view v_emp as select emp.empno,emp.ename,emp.deptno from emp,dept
    where emp.deptno=dept.deptno;
    
    SQL> select * from t10;
    
    	ID NAME
    ---------- ----------
    	 1 a
    	 2 b
    	 3 c
          7902 d
          7900 e
          7844 f
    
    已选择6行。
    
    SQL> select * from v_emp;
    
         EMPNO ENAME	  DEPTNO
    ---------- ---------- ----------
          7369 SMITH	      20
          7499 ALLEN	      30
          7521 WARD 	      30
          7566 JONES	      20
          7654 MARTIN	      30
          7698 BLAKE	      30
          7782 CLARK	      10
          7788 SCOTT	      20
          7839 KING 	      10
          7844 TURNER	      30
          7876 ADAMS	      20
    
         EMPNO ENAME	  DEPTNO
    ---------- ---------- ----------
          7900 JAMES	      30
          7902 FORD 	      20
          7934 MILLER	      10
    
    已选择14行。
    
    SQL> select  /*+ use_nl(a b)  */ * from t10 a,v_emp b
    where a.id=b.empno(+)  2  ;
    
    已选择6行。
    
    
    执行计划
    ----------------------------------------------------------
    Plan hash value: 1825515217
    
    ---------------------------------------------------------------------------------------
    | Id  | Operation		     | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT	     |	      |     6 |   228 |     9	(0)| 00:00:01 |
    |   1 |  NESTED LOOPS OUTER	     |	      |     6 |   228 |     9	(0)| 00:00:01 |
    |   2 |   TABLE ACCESS FULL	     | T10    |     6 |   150 |     3	(0)| 00:00:01 |
    |*  3 |   TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    13 |     1	(0)| 00:00:01 |
    |*  4 |    INDEX UNIQUE SCAN	     | PK_EMP |     1 |       |     0	(0)| 00:00:01 |
    ---------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       3 - filter("EMP"."DEPTNO"(+) IS NOT NULL)
       4 - access("A"."ID"="EMP"."EMPNO"(+))
    
    Note
    -----
       - dynamic sampling used for this statement (level=2)
    
    
    统计信息
    ----------------------------------------------------------
    	 11  recursive calls
    	  0  db block gets
    	 24  consistent gets
    	  0  physical reads
    	  0  redo size
    	837  bytes sent via SQL*Net to client
    	415  bytes received via SQL*Net from client
    	  2  SQL*Net roundtrips to/from client
    	  1  sorts (memory)
    	  0  sorts (disk)
    	  6  rows processed
    
    
    SQL> select  /*+ use_nl(a b) no_merge(b)*/ * from t10 a,v_emp b
    where a.id=b.empno(+)  2  ;
    
    已选择6行。
    
    
    执行计划
    ----------------------------------------------------------
    Plan hash value: 3375986511
    
    ----------------------------------------------------------------------------------------
    | Id  | Operation		      | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT	      |        |     6 |   438 |     9	 (0)| 00:00:01 |
    |   1 |  NESTED LOOPS OUTER	      |        |     6 |   438 |     9	 (0)| 00:00:01 |
    |   2 |   TABLE ACCESS FULL	      | T10    |     6 |   228 |     3	 (0)| 00:00:01 |
    |   3 |   VIEW PUSHED PREDICATE       | V_EMP  |     1 |    35 |     1	 (0)| 00:00:01 |
    |*  4 |    TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    13 |     1	 (0)| 00:00:01 |
    |*  5 |     INDEX UNIQUE SCAN	      | PK_EMP |     1 |       |     0	 (0)| 00:00:01 |
    ----------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       4 - filter("EMP"."DEPTNO" IS NOT NULL)
       5 - access("EMP"."EMPNO"="A"."ID")
    
    Note
    -----
       - dynamic sampling used for this statement (level=2)
    
    
    统计信息
    ----------------------------------------------------------
    	 17  recursive calls
    	  0  db block gets
    	 40  consistent gets
    	  0  physical reads
    	  0  redo size
    	832  bytes sent via SQL*Net to client
    	415  bytes received via SQL*Net from client
    	  2  SQL*Net roundtrips to/from client
    	  1  sorts (memory)
    	  0  sorts (disk)
    	  6  rows processed
    
    可以看到谓词推入通过关联列推入.
    
    
    

  • 相关阅读:
    还不懂MySQL索引?这1次彻底搞懂B+树和B-树
    11条MySQL规范,你知道的有几个?
    4个点说清楚Java中synchronized和volatile的区别
    还不知道如何实践微服务的Java程序员,这遍文章千万不要错过!
    14个Java并发容器,你用过几个?
    分布式事务解决方案,中间件 Seata 的设计原理详解
    一篇文章搞明白Integer、new Integer() 和 int 的概念与区别
    一线大厂面试官最喜欢问的15道Java多线程面试题
    70道阿里百度高频Java面试题(框架+JVM+多线程+算法+数据库)
    关于spark当中生成的RDD分区的设置情况。
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352078.html
Copyright © 2011-2022 走看看