My oracle database version: PL/SQL Release 12.2.0.1.0 - Production
The table A DDL:
The CREATE TABLE A
(" BILLID "NVARCHAR2 (50), NOT NULL ENABLE,
"BILLTYPE NVARCHAR2 (10),
"CDATE" DATE,
The CONSTRAINT "PK_A_ID" PRIMARY KEY (" BILLID "))
PARTITION BY RANGE (CDATE)
- the INTERVAL (NUMTOYMINTERVAL (12, 'MONTH'))
Subpartition By list (billtype)
SUBPARTITION template
(
SUBPARTITION BILLMTYPE_XSCK_C VALUES (' XSCK),
SUBPARTITION BILLMTYPE_XCWGRK_C VALUES (' XCWGRK),
SUBPARTITION BILLMTYPE_XCSHRK_C VALUES (' XCSHRK),
SUBPARTITION BILLMTYPE_WGRK_C VALUES (' WGRK),
SUBPARTITION BILLMTYPE_DBD_C VALUES (' DBD),
SUBPARTITION BILLMTYPE_XCWZCKC VALUES (' XCWZCK),
SUBPARTITION BILLMTYPE_CPRK_C VALUES (' CPRK),
SUBPARTITION BILLMTYPE_WZCK_C VALUES (' WZCK),
SUBPARTITION BILLMTYPE_XCRK_C VALUES (' XCRK),
SUBPARTITION BILLMTYPE_QTCK_C VALUES (' QTCK),
SUBPARTITION BILLMTYPE_XCCK_C VALUES (' XCCK)
)
(
PARTITION SM_A_2018 VALUES LESS THAN (To_date (' 16:00:00 2018-12-31 ', '- dd yyyy - mm hh24: mi: ss')),
PARTITION SM_A_2019 VALUES LESS THAN (To_date (' 16:00:00 2019-12-31 ', '- dd yyyy - mm hh24: mi: ss')),
PARTITION SM_A_2020 VALUES LESS THAN (To_date (' 16:00:00 2020-12-31 ', '- dd yyyy - mm hh24: mi: ss')),
PARTITION SM_A_2021 VALUES LESS THAN (To_date (' 16:00:00 2021-12-31 ', '- dd yyyy - mm hh24: mi: ss')),
PARTITION SM_A_2022 VALUES LESS THAN (To_date (' 16:00:00 2022-12-31 ', '- dd yyyy - mm hh24: mi: ss'))
)
;
Table B DDL:
The CREATE TABLE B
(
"BILLDETAILID NVARCHAR2 (50) NOT NULL, ENABLE
"BILLID" NVARCHAR2 (50) not null,
"ITEMID" NVARCHAR2 (50),
The CONSTRAINT "PK_A_B_DETAIL" PRIMARY KEY (" BILLDETAILID "),
The CONSTRAINT "FK_B_A_BILLID" FOREIGN KEY (BILLID) REFERENCES A (" BILLID "))
PARTITION BY REFERENCE (FK_B_A_BILLID);
The table C DDL:
The CREATE TABLE C (
"ID" nvarchar2 (50), not null enable,
"CODE" NVARCHAR2 (80),
The CONSTRAINT "PK_C_ID" PRIMARY KEY (" ID ")
)
The explain plan:
1.
The explain plan for
Select * from a inner join b on a. illid=b.b illid
Inner join c on B.I temid=C.I d
Where a. illtype='WZCK and A.C date & gt; 16:00:00=to_date (' 2019-12-31 ', '- dd yyyy - mm hh24: mi: ss') AND A.C date & lt; 16:00:00 TO_DATE (' 2020-12-31 ', '- dd yyyy - mm hh24: mi: ss')
;
Plan the hash value: 3515450193
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| | Id Operation | Name | Rows | Bytes | TempSpc | Cost (% CPU) | Time | Pstart | Pstop |
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| | 0 SELECT STATEMENT | | 49519 | | 17 m 26754 (1) | | 00:00:02 | | |
| * 1 | HASH JOIN | | 49519 | | 17 m 13 m 26754 (1) | | 00:00:02 | | |
| 2 | PARTITION RANGE SINGLE | | 49519 | | 13 m 19132 (1) | | 00:00:01 | 3 | 3 |
| 3 | PARTITION LIST SINGLE | | 49519 | | 13 m 19132 (1) | | 00:00:01 | KEY | KEY |
| | * 4 HASH JOIN | | 49519 | | 13 m 19132 (1) | | 00:00:01 | | |
| | 5 TABLE ACCESS FULL | A | | 7552 | 604 k 240 (0) | | 00:00:01 30 30 | | |
| | 6 TABLE ACCESS FULL 307 m | | | | 1662 k B 18888 (1) | | 00:00:01 30 30 | | |
7 | | TABLE ACCESS FULL 70 m | | | | C 748 k 3018 (1) | | 00:00:01 | | |
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
The Predicate Information (identified by operation id) :
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
1 - access (" B ". "ITEMID"="C". "ID")
4 - access (" A ". "BILLID"="B". "BILLID")
Note
-- -- -- -- --
- this is an adaptive plan
Partition pruning effect
2. The explain paln
The explain plan for
Select * from a inner join b on a. illid=b.b illid
Inner join c on B.I temid=C.I d
Where a. illtype='WZCK and A.C date & gt; 16:00:00=to_date (' 2019-12-31 ', '- dd yyyy - mm hh24: mi: ss') AND A.C date & lt; 16:00:00 TO_DATE (' 2020-12-31 ', '- dd yyyy - mm hh24: mi: ss')
AND Arthur c. ODE LIKE '% 20.'
;
Plan the hash value: 437133680
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| | Id Operation | Name | Rows | Bytes | Cost (% CPU) | Time | Pstart | Pstop |
nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull