I'm using Oracle Database "Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 64bit"
I'm facing a behavior I don't know if its right or there is something wrong with that.
for example the below query
SELECT *
FROM   (SELECT x, y, z, ROW_NUMBER() OVER (PARTITION BY x ORDER BY last_date DESC) ROW1 
         FROM HHH
         WHERE s = 0
         AND v_Date <= TO_DATE('20191110','YYYYMMDD') 
         AND t_Date >= TO_DATE('20191110','YYYYMMDD')
WHERE   ROW1 = 1
I created an Index on as below:
CREATE INDEX IDX_HHH_S_V_T_DATE ON HHH (S, v_date desc, t_date desc) compute statistics
The optimizer always choose this index, but when I mentioned "Parallel" hint:
 SELECT *
    FROM   (SELECT /*+ PARALLEL(8) */ x, y, z, ROW_NUMBER() OVER (PARTITION BY x ORDER BY last_date DESC) ROW1 
             FROM HHH
             WHERE s = 0
             AND v_Date <= TO_DATE('20191110','YYYYMMDD') 
             AND t_Date >= TO_DATE('20191110','YYYYMMDD')
    WHERE   ROW1 = 1
The optimizer choose to skip this index.
Solutions I tried and still the same:
- I altered the table to parallel 8
- I altered the index to parallel 8
When trying to force the optimizer to use the index using "INDEX" hint:
 SELECT *
    FROM   (SELECT /*+ PARALLEL(8) INDEX(HHH (IDX_HHH_S_V_T_DATE))*/ x, y, z, ROW_NUMBER() OVER (PARTITION BY x ORDER BY last_date DESC) ROW1 
             FROM HHH
             WHERE s = 0
             AND v_Date <= TO_DATE('20191110','YYYYMMDD') 
             AND t_Date >= TO_DATE('20191110','YYYYMMDD')
    WHERE   ROW1 = 1



 
    