ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Oracle] Predicate Information - Access, Filter
    Database 2024. 7. 13. 15:59

    Access : 데이터를 접근하는 방법

    인덱스를 사용하거나 테이블 전체를 스캔하는 등의 방식으로 데이터를 읽는 작업을 설명합니다.

    • Index Access: 인덱스를 사용하여 데이터를 읽는 방식 ex) Index Scan, Index Range Scan 등
    • Table Access: 테이블에서 데이터를 직접 읽는 방식 ex) Full Table Scan, Index Lookup 등

    Filter : 이미 접근된 데이터에 대해 추가적인 조건을 적용하여 데이터를 필터링하는 작업

    where절에서 지정된 조건이나 조인 조건 등을 적용하는 과정을 포함합니다.

     

    ex) t1_n1 인덱스를 이용하여 INDEX RANGE SCAN 으로 접근 (access)

    where 절의 C2='dummy'로 필터링한다 (filter)

    drop table t1; 
    create table t1(c1 int, c2 char(10)); 
    insert into t1 select level, 'dummy' from dual connect by level <= 10000;
    commlt;
    create index t1_n1 on t1(c1); 
    
    set autotrace on
    select * from t1 where c1=1 and c2='dummy';
    
    	C1 C2
    ---------- ----------
    	 1 dummy
    
    
    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 909725748
    
    ---------------------------------------------------------------------------------------------
    | Id  | Operation			    | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT		    |	    |	  1 |	 25 |	  2   (0)| 00:00:01 |
    |*  1 |  TABLE ACCESS BY INDEX ROWID BATCHED| T1    |	  1 |	 25 |	  2   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN		    | T1_N1 |	  1 |	    |	  1   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       1 - filter("C2"='dummy') <-- where 절의 C2='dummy'로 필터링함
       2 - access("C1"=1) <-- 인덱스 t1_n1를 이용하여 INDEX RANGE SCAN 으로 접근
Designed by Tistory.