Probabilmente dovresti iniziare con EXPLAIN PLAN .
Quindi modifica la tua domanda e pubblica l'istruzione SQL e l'output di EXPLAIN PLAN.
Più tardi. . .
Non ti sarò di grande aiuto su questa domanda. 269 righe, almeno 29 SELECT, query parallele, database remoti, outer join (vecchio stile) e così via.
Il miglior consiglio che posso darti è
- ottieni maggiori informazioni da EXPLAIN PLAN e
- semplificare il problema.
La tabella del piano ha più colonne di quelle comunemente pubblicate. Le colonne COST, CARDINALITY, BYTES e TIME potrebbero essere utili per dare la priorità al tuo sforzo di ottimizzazione.
Hai 10 scansioni complete della tabella in quella query. ("TABLE ACCESS FULL" nel piano di query.) Di solito è un brutto segno; le scansioni complete della tabella spesso richiedono un tempo relativamente lungo per l'esecuzione. Non è sempre un brutto segno. Una scansione completa di una piccola tabella potrebbe essere più veloce di una scansione dell'indice.
Inizia ottenendo l'output di EXPLAIN PLAN per ciascuna delle 29 istruzioni SELECT nella tua query. Se qualcuno di loro mostra una scansione completa della tabella, puoi probabilmente migliorarne le prestazioni con indici adatti . (Oracle supporta molti tipi diversi di indici. Non trascurare le opportunità per gli indici a più colonne.) In ogni caso, l'output di EXPLAIN PLAN ti aiuterà a identificare il più lento dei 29 SELECT.