정렬 해시 클러스터 테이블

  • 10g에서 새롭게 소개.
  • 해시 클러스터 테이블과 IOT의 장점이 결합된 테이블.
  • 정렬된 순서에 따라 데이터를 물리적으로 삽입.
  • 아래와 같은 유사한 쿼리를 반복해서 수행할 때 가장 적합.
    (키 값으로 데이터를 추출하고, 다른 어떤 컬럼으로 데이터를 정렬할 경우)

select *
from t
where key = :x
order by sorted_column

  • 해시 키는 cust_id, 정렬하기 위한 컬럼은 order_dt

create cluster shc
( cust_id number,
  order_dt timestamp sort
)
hashkeys 10000
hash is cust_id
size 8192
/

create table cust_orders
( cust_id       number,
  order_dt     timestamp sort,
  order_number number,
  username    varchar2(30),
  ship_addr     number,
  bill_addr      number,
  ivoice_num  number
)
cluster shc (cust_id, order_dt)
/

set autotrace traceonly explain
variable x number
select cust_id, order_dt, order_number
from cust_orders
where cust_id = :x
order by order_dt;

Execution Plan
----------------------------------------------------------
Plan hash value: 465084913

----------------------------------------------------------------------
| Id  | Operation         | Name        | Rows  | Bytes | Cost (%CPU)|
----------------------------------------------------------------------
|   0 | SELECT STATEMENT  |             |     1 |    39 |     0   (0)|
|*  1 |  TABLE ACCESS HASH| CUST_ORDERS |     1 |    39 |            |
----------------------------------------------------------------------

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

   1 - access("CUST_ID"=TO_NUMBER(:X))