Plan wykonania wybrany przez wybranego optymalizatora może się znacznie różnić nawet między dwoma środowiskami tej samej wersji, a nie tylko 11g i 12c. Zależy to od wielu czynników, ale przede wszystkim:
- Liczba wierszy w tabeli (czy są podobne w różnych środowiskach?)
- Jakie indeksy są obecne (czy obie bazy danych mają dokładnie takie same indeksy?)
- Czy istnieją statystyki dotyczące tabeli i indeksów oraz jaka jest ich aktualność? Jeśli nie są aktualne, zbierz statystyki dla tabel i indeksy.
Jeśli możesz opublikować te informacje, mogę udzielić bardziej pomocnej odpowiedzi.
Ponadto kod wygląda jak wygenerowany automatycznie, jeśli możesz go zmodyfikować, w oparciu o szczegóły możemy zasugerować przepisane zapytanie i/lub podpowiedzi.
Jeśli nie możesz zmodyfikować kodu, możesz wymusić plan za pomocą SQL Plan Management (SPM) - eksportuj z bazy danych, w której działa szybciej, i importuj do innej bazy danych.
AKTUALIZUJ
Użyj tej uproszczonej wersji SQL do wygenerowania planu:
SELECT * FROM DMProgDate_00001
WHERE ProgressOID IN (
SELECT OID FROM DMProgress_00001
WHERE Project = 'Moho'
AND Phase = 'Procurement'
AND Displine = 'Q340'
AND ROWNUM <= 20
ORDER BY actCode
);