sql >> Database teknologi >  >> RDS >> Oracle

oracle - samme forespørgsel, men anden plan i 11g og 12c

Udførelsesplanen valgt af den valgte optimizer kan variere meget selv mellem to miljøer af samme version, ikke kun 11g og 12c. Det afhænger af mange faktorer, men mest:

  • Antal rækker i tabellen (er de ens mellem envs?)
  • Hvilke indekser er til stede (har begge dbs nøjagtig de samme indekser?)
  • Er der statistik for tabellen og indeksene, og hvor opdaterede er de? Hvis den ikke er opdateret, så saml venligst statistik for tabellerne og indekserne.

Hvis du kan sende disse detaljer, kan jeg give et mere nyttigt svar.

Koden ser også ud som automatisk genereret, hvis du har frihed til at ændre dem, baseret på detaljerne, kan vi foreslå en omskrevet forespørgsel og/eller hints.

Hvis du ikke kan ændre koden, kan du gennemtvinge en plan med SQL Plan Management (SPM) - eksporter fra den db, hvor den kører hurtigere og importer til den anden db.

OPDATERING

Brug denne forenklede version af SQL til at generere planen:

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. SQL Server ALL Operator forklaret

  2. Kan ikke slippe tabel:En fremmednøgle-begrænsning mislykkes

  3. Online værktøjer til at prøve SQL design og forespørgsler

  4. SQL - AS - tabel eksisterer ikke - 1146