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

Prestazioni:sottoquery o join

I moderni RDBM, incluso Oracle, ottimizzano la maggior parte dei join e delle sottoquery fino allo stesso piano di esecuzione.

Pertanto, andrei avanti e scriverò la tua query nel modo più semplice per te e mi concentrerei sull'ottimizzazione completa dei tuoi indici.

Se fornisci la tua query finale e lo schema del tuo database, potremmo essere in grado di offrire suggerimenti dettagliati, comprese informazioni su potenziali problemi di blocco.

Modifica

Ecco alcuni suggerimenti generali che si applicano alla tua richiesta:

  • Per i join, assicurati di avere un indice sulle colonne a cui ti stai unendo. Assicurati di applicare un indice alle colonne unite in entrambe le tabelle. Potresti pensare di aver bisogno dell'indice solo in una direzione, ma dovresti indicizzare entrambi, poiché a volte il database determina che è meglio unire nella direzione opposta.
  • Per le clausole WHERE, assicurati di avere indici sulle colonne menzionate in WHERE.
  • Per inserire molte righe, è meglio se puoi inserirle tutte in un'unica query.
  • Per l'inserimento in una tabella con un indice cluster, è meglio inserire con valori incrementali per l'indice cluster in modo che le nuove righe vengano aggiunte alla fine dei dati. Ciò evita di ricostruire l'indice e spesso evita i blocchi sui record esistenti, che rallenterebbe le query SELECT sulle righe esistenti. Fondamentalmente, gli inserti diventano meno dolorosi per gli altri utenti del sistema.