sql >> Database >  >> RDS >> Oracle

sql Optimizer voor grote DB-tabel

Je zou waarschijnlijk moeten beginnen met UITLEG PLAN .

Bewerk vervolgens uw vraag en post de SQL-instructie en de uitvoer van EXPLAIN PLAN.

Later . . .

Ik ga je niet veel helpen met die vraag. 269 ​​regels, ten minste 29 SELECT's, parallelle query's, externe databases, outer joins (oude stijl), enzovoort.

Het beste advies dat ik je kan geven is

  • krijg meer informatie van PLAN UITLEG, en
  • vereenvoudig het probleem.

De plantabel heeft meer kolommen dan gewoonlijk worden gepost. De kolommen KOSTEN, KARDINALITEIT, BYTES en TIJD kunnen handig zijn bij het prioriteren van uw afstemmingsinspanningen.

Je hebt 10 volledige tabelscans in die query. ("TABELTOEGANG VOL" in het queryplan.) Dat is meestal een slecht teken; volledige tafelscans duren vaak relatief lang. Het is niet altijd een slecht teken. Een volledige scan van een kleine tabel is misschien sneller dan een indexscan.

Begin met het verkrijgen van EXPLAIN PLAN-uitvoer voor elk van de 29 SELECT-instructies in uw query. Als een van hen een volledige tabelscan laat zien, kunt u hun prestaties waarschijnlijk verbeteren met geschikte indexen . (Oracle ondersteunt veel verschillende soorten indexen. Zie kansen voor indexen met meerdere kolommen niet over het hoofd.) In ieder geval zal de EXPLAIN PLAN-uitvoer u helpen de langzaamste van de 29 SELECT's te identificeren.



  1. Hoe een beschadigde tabel te repareren

  2. Hoe kan ik kolomopmerkingen in PostgreSQL invoegen via Python?

  3. Tabellen samenvoegen - SQL

  4. Mysql decimaal:vloer in plaats van rond