sql >> Databáze >  >> RDS >> Oracle

oracle - stejný dotaz, ale jiný plán v 11g a 12c

Plán provádění zvolený zvoleným optimalizátorem se může značně lišit i mezi dvěma prostředími stejné verze, nikoli pouze 11g a 12c. Záleží na mnoha faktorech, ale většinou:

  • Počet řádků v tabulce (jsou podobné mezi prostředími?)
  • Jaké indexy jsou k dispozici (mají obě databáze přesně stejné indexy?)
  • Existují statistiky pro tabulku a indexy a jak jsou aktuální? Pokud nejsou aktuální, shromážděte statistiky pro tabulky a indexy.

Pokud můžete zveřejnit tyto podrobnosti, mohu poskytnout užitečnější odpověď.

Kód také vypadá jako automaticky generovaný, pokud ho můžete upravit, na základě podrobností vám můžeme navrhnout přepsaný dotaz a/nebo rady.

Pokud nemůžete upravit kód, můžete vynutit plán pomocí SQL Plan Management (SPM) – export z databáze, kde běží rychleji, a import do jiné databáze.

AKTUALIZACE

Ke generování plánu použijte tuto zjednodušenou verzi SQL:

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
  );



  1. Uložené procedury vs spouštěče v MySQL

  2. Divné všude

  3. MySQL SUM() dává nesprávný součet

  4. pád aplikace na JSON jparser vygeneruje požadavek http