0 voti
5.6k visite
quesito posto in Performance Tuning da (2.1k punti)
Una delle domande più frequenti è senza dubbio come si può rendere più veloce una query.

Ovviamente è necessario analizzare di volta in volta il singolo caso ma senza dubbio le principali operazioni da fare sono:

- verificare l'explain plan ed assicurarsi che il primo accesso venga effettuato sulla tabella che consente la maggior selettività dei dati ed utilizzando possibilmente un indice. Se così non fosse forzare il piano utilizzando delle hint.

- verificare che le statistiche delle tabelle siano aggiornate.

- verificare sempre dal piano di accesso che il tipo di join scelto da oracle sia il più performante. Se vogliamo mettere in join milioni di dati solitamente è più performante un hash join piuttosto che un nested loop

- verificare se tutte le tabelle che stiamo mettendo in join sono realmente necessarie. Spesso mi è successo di abbattere notevolmente i tempi di esecuzione mettendo delle select puntuali direttamente nella SELECT togliendo le tabelle dalla FROM ed elminando quindi la JOIN. Se si deve verificare solamente una condizione e non servono i campi di una determinata tabella in output può essere utile anche utilizzare EXISTS oppure NOT EXISTS.

Quali sono invece i vostri trucchi del mestiere?

Fai il log in oppure registrati per rispondere al quesito.

Domande correlate

+1 voto
1 risposta 3.6k visite
quesito posto 30 Maggio 2014 in Performance Tuning da azf (130 punti)
+1 voto
1 risposta 966 visite
quesito posto 8 Luglio 2014 in Performance Tuning da gr_g (150 punti)
0 voti
0 risposte 2.9k visite
quesito posto 8 Dicembre 2013 in DBA da carlo10 (2.1k punti)
0 voti
0 risposte 13.1k visite
quesito posto 7 Dicembre 2013 in DBA da carlo10 (2.1k punti)
0 voti
0 risposte 2.7k visite
quesito posto 11 Dicembre 2013 in Performance Tuning da carlo10 (2.1k punti)
...