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

Quando utilizzare i suggerimenti nella query Oracle

La maggior parte dei suggerimenti sono un modo per comunicare il nostro intento all'ottimizzatore. Ad esempio, il leading il suggerimento che menzioni significa unire le tabelle in questo ordine . Perché è necessario? Spesso è perché l'ordine di join ottimale non è ovvio, perché la query è scritta male o le statistiche del database sono imprecise.

Quindi un uso di suggerimenti come leading è capire il miglior percorso di esecuzione, quindi capire perché il database non sceglie quel piano senza il suggerimento. La raccolta di nuove statistiche risolve il problema? La riscrittura della clausola FROM risolve il problema? In tal caso, possiamo rimuovere i suggerimenti e distribuire l'SQL nudo.

A volte ci sono momenti in cui non possiamo risolvere questo enigma e dobbiamo mantenere i suggerimenti in Produzione. Tuttavia questa dovrebbe essere una rara eccezione. Oracle ha avuto molte persone molto intelligenti che hanno lavorato sull'ottimizzatore basato sui costi per molti anni, quindi le sue decisioni sono generalmente migliori delle nostre.

Ma ci sono altri suggerimenti che non vorremmo vedere in Produzione. append è spesso cruciale per la messa a punto degli inserti bulk. driving_site può essere vitale nell'ottimizzazione delle query distribuite.

Al contrario, altri suggerimenti sono quasi sempre abusati. Sì parallel , Sto parlando di te. Mettere alla cieca /*+ parallel (t23, 16) */ probabilmente non farà eseguire la tua query sedici volte più velocemente e non di rado risulterà più lenta recupero rispetto a un'esecuzione a thread singolo.

Quindi, in breve, non esiste un consiglio universalmente applicabile su quando dovremmo usare i suggerimenti. Le cose fondamentali sono:

  1. capire come funziona il database e soprattutto come funziona l'ottimizzatore basato sui costi;
  2. capire cosa fa ogni suggerimento;
  3. verifica le query con suggerimenti in un ambiente di ottimizzazione adeguato con dati equivalenti alla produzione.

Ovviamente il miglior punto di partenza è la documentazione di Oracle . Tuttavia, se hai voglia di spendere dei soldi, consulta il libro di Jonathan Lewis su l'ottimizzatore basato sui costi è il miglior investimento che potresti fare.