I came to a execution plan where oracle choose to access the index but instead of using the columns as predicate it only filter by them.
My question is what are the reasons that can cause that(all the involved columns are in the index).
For example(However I want it to be more a generic question):
...
|* 18 | HASH JOIN | | 4064K| 294M| 307M| 55108 (1)| 00:11:02 | | |
| 19 | PARTITION RANGE SINGLE| | 6456K| 233M| | 12217 (1)| 00:02:27 | 20 | 20 |
|* 20 | INDEX FAST FULL SCAN | IX_TAB_TEMP1 | 6456K| 233M| | 12217 (1)| 00:02:27 | 20 | 20 |
| 21 | PARTITION RANGE SINGLE| | 6456K| 233M| | 12217 (1)| 00:02:27 | 20 | 20 |
|* 22 | INDEX FAST FULL SCAN | IX_TAB_TEMP1 | 6456K| 233M| | 12217 (1)| 00:02:27 | 20 | 20 |
...
18 - access("ITEM"."PARENTID"="HOL"."MID")
20 - filter("ITEM"."ID1"=1110 AND "ITEM"."ID2"=1112)
22 - filter("HOL"."ID1"=1110 AND "HOL"."ID2"=1112)
Index is (ID1, ID2, MID, PARENTID)
local. partition is range on ID1, ID2