Hi John
Apologies for the late response, had a few busy weeks.
I created a test case on an Oracle 12.1.0.2 as detailed below.
CREATE TABLE TST1
NOLOGGING AS
SELECT ROWNUM id, DBMS_RANDOM.STRING (OPT => 'X', LEN => 40) txt
FROM DUAL
CONNECT BY ROWNUM < 1001;
CREATE TABLE TST2
NOLOGGING AS
SELECT ROWNUM id, DBMS_RANDOM.STRING (OPT => 'X', LEN => 40) txt
FROM DUAL
CONNECT BY ROWNUM < 10001;
CREATE INDEX IX_ID
ON TST1 (ID)
NOLOGGING;
EXPLAIN PLAN
SET STATEMENT_ID = 'ADAPT'
FOR
SELECT tst1.txt
FROM tst1 JOIN tst2 USING (Id)
WHERE tst2.txt LIKE 'A%';
SELECT plan_table_output
FROM TABLE (DBMS_XPLAN.DISPLAY (NULL, 'ADAPT', '+adaptive'));
Plan hash value: 2583778186
-----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 238 | 21420 | 21 (0)| 00:00:01 |
| * 1 | HASH JOIN | | 238 | 21420 | 21 (0)| 00:00:01 |
|- 2 | NESTED LOOPS | | 238 | 21420 | 21 (0)| 00:00:01 |
|- 3 | NESTED LOOPS | | | | | |
|- 4 | STATISTICS COLLECTOR | | | | | |
| * 5 | TABLE ACCESS FULL | TST2 | 238 | 10710 | 17 (0)| 00:00:01 |
|- * 6 | INDEX RANGE SCAN | IX_ID | | | | |
|- 7 | TABLE ACCESS BY INDEX ROWID| TST1 | 1 | 45 | 4 (0)| 00:00:01 |
| 8 | TABLE ACCESS FULL | TST1 | 1000 | 45000 | 4 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("TST1"."ID"="TST2"."ID")
5 - filter("TST2"."TXT" LIKE 'A%')
6 - access("TST1"."ID"="TST2"."ID")
Note
-----
- this is an adaptive plan (rows marked '-' are inactive)
This is the tree view in Toad (12.10.0.30)
Plan
SELECT STATEMENT ALL_ROWSCost: 21 Bytes: 21.420 Cardinality: 238
8 HASH JOIN Access Predicates: "TST1"."ID"="TST2"."ID" Cost: 21 Bytes: 21.420 Cardinality: 238
6 NESTED LOOPS Cost: 21 Bytes: 21.420 Cardinality: 238
4 NESTED LOOPS
2 STATISTICS COLLECTOR
1 TABLE ACCESS FULL TABLE WEKIR.TST2 Filter Predicates: "TST2"."TXT" LIKE 'A%' Cost: 17 Bytes: 10.710 Cardinality: 238
3 INDEX RANGE SCAN INDEX WEKIR.IX_ID Access Predicates: "TST1"."ID"="TST2"."ID"
5 TABLE ACCESS BY INDEX ROWID TABLE WEKIR.TST1 Cost: 4 Bytes: 45 Cardinality: 1
7 TABLE ACCESS FULL TABLE WEKIR.TST1 Cost: 4 Bytes: 45.000 Cardinality: 1.000
I'll send a mail with the above details as well as screenshots and SQL spool