다중 키로 생성한 해시 파티션의 조회 방식을 테스트하기 위해 아래와 같이 테이블을 생성하겠습니다.
-- 1
DROP TABLE t1 PURGE;
CREATE TABLE t1 (c1 NUMBER, c2 NUMBER, c3 NUMBER)
PARTITION BY HASH (c1, c2, c3) PARTITIONS 256;
전체 파티션 키를 등호(=)로 입력하면 단일 파티션이 조회됩니다.
-- 2
SELECT * FROM t1 WHERE c1 = 1 AND c2 = 1 AND c3 = 1;
------------------------------------------------------
| Id | Operation | Name | Pstart| Pstop |
------------------------------------------------------
| 0 | SELECT STATEMENT | | | |
| 1 | PARTITION HASH SINGLE| | 230 | 230 |
|* 2 | TABLE ACCESS FULL | T1 | 230 | 230 |
------------------------------------------------------
하나의 파티션 키라도 입력하지 않으면 전체 파티션을 조회됩니다.
-- 2
SELECT * FROM t1 WHERE c1 = 1 AND c2 = 1;
---------------------------------------------------
| Id | Operation | Name | Pstart| Pstop |
---------------------------------------------------
| 0 | SELECT STATEMENT | | | |
| 1 | PARTITION HASH ALL| | 1 | 256 |
|* 2 | TABLE ACCESS FULL| T1 | 1 | 256 |
---------------------------------------------------
일부 파티션 키를 IN 조건으로 입력하더라도 전체 파티션 키를 등호(=)로 입력할 수 있으면 해당하는 파티션만 조회됩니다.
-- 3
SELECT * FROM t1 WHERE c1 IN (1, 2) AND c2 = 1 AND c3 IN (1, 2);
------------------------------------------------------
| Id | Operation | Name | Pstart| Pstop |
------------------------------------------------------
| 0 | SELECT STATEMENT | | | |
| 1 | PARTITION HASH INLIST| |KEY(I) |KEY(I) |
|* 2 | TABLE ACCESS FULL | T1 |KEY(I) |KEY(I) |
------------------------------------------------------