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

Ydelse:Underforespørgsel eller deltagelse

Moderne RDBM'er, inklusive Oracle, optimerer de fleste joinforbindelser og underforespørgsler ned til den samme eksekveringsplan.

Derfor vil jeg gå videre og skrive din forespørgsel på den måde, der er enklest for dig og fokusere på at sikre, at du har optimeret dine indekser fuldt ud.

Hvis du angiver din endelige forespørgsel og dit databaseskema, kan vi muligvis tilbyde detaljerede forslag, herunder oplysninger om potentielle låseproblemer.

Rediger

Her er nogle generelle tips, der gælder for din forespørgsel:

  • For joinforbindelser skal du sikre dig, at du har et indeks på de kolonner, du deltager i. Sørg for at anvende et indeks på de sammenføjede kolonner i begge tabeller. Du tror måske, at du kun har brug for indekset i én retning, men du bør indeksere begge, da databasen nogle gange bestemmer, at det er bedre at deltage i den modsatte retning.
  • For WHERE-sætninger skal du sikre dig, at du har indekser på kolonnerne nævnt i WHERE.
  • For at indsætte mange rækker er det bedst, hvis du kan indsætte dem alle i en enkelt forespørgsel.
  • For at indsætte på en tabel med et klynget indeks er det bedst, hvis du indsætter med trinvise værdier for det klyngede indeks, så de nye rækker tilføjes til slutningen af ​​dataene. Dette undgår at genopbygge indekset og undgår ofte låse på de eksisterende poster, hvilket ville sænke SELECT-forespørgsler mod eksisterende rækker. Grundlæggende bliver indsatser mindre smertefulde for andre brugere af systemet.


  1. Sortering af SQL efter to første tegn i felter

  2. Sådan overføres boolesk parameter til Oracle-procedure C#

  3. Brug LIMIT til at paginere resultater i MySQL-forespørgsel

  4. Kan Oracle SQL*Loader behandle XML?