Uitdaging: Query-Optimalisatie
Laten we twee tabellen bekijken: BankAccounts
en een extra tabel genaamd Transactions
.
BankAccounts table
Transactions table
Stel dat we alleen de rekeningnummers willen ophalen die minstens één transactie hebben uitgevoerd.
In deze opdracht is er een query die niet geoptimaliseerd is. De opdracht is om deze op een meer optimale manier te herschrijven.
Hier volgt een lijst met de belangrijkste technieken voor het herschrijven van queries ter verbetering van de optimalisatie:
-
Kolommen Expliciet Specificeren: Vermijd het gebruik van het sterretje (
*
) wildcard en geef kolomnamen expliciet op in queries voor betere prestaties, leesbaarheid en onderhoudbaarheid; -
Minimaliseren van Subqueries: Beperk het gebruik van subqueries om de prestaties van queries te optimaliseren. Overweeg alternatieven zoals joins of afgeleide tabellen om complexiteit en overhead te vermijden;
-
Vermijd Herhaald Gebruik van IN-Operatoren: Beperk het gebruik van de
IN
-operator in queries om prestatieproblemen te voorkomen. Overweeg in plaats daarvan het gebruik vanJOIN
- ofEXISTS
-clausules voor efficiëntere uitvoeringsplannen; -
Logische Organisatie van Joins: Begin SQL-joins met de hoofdtafel en voeg vervolgens gerelateerde tabellen toe om de organisatie van de query en de optimalisatie door de database-engine te verbeteren;
-
Gebruik Restrictieve WHERE-Condities: Verbeter de prestaties van queries door restrictieve condities op te nemen in de
WHERE
-clausule om rijen te filteren en de uitvoeringssnelheid te verhogen; -
Code Herstructureren naar Stored Procedures of Functies: Encapsuleer herhalende code in stored procedures of user-defined functions voor herbruikbaarheid, modulariteit en eenvoudiger onderhoud. Dit kan redundantie verminderen en SQL-queries optimaliseren.
Swipe to start coding
Herschrijf de query op een meer optimale manier. Let erop dat we alleen rekeningnummers willen verkrijgen die ten minste één transactie hebben uitgevoerd (geld overgemaakt naar een andere rekening), gesorteerd in oplopende volgorde.
Opmerking
Gebruik het
LEFT
- ofINNER
-jointype om deze taak uit te voeren.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4.35
Uitdaging: Query-Optimalisatie
Veeg om het menu te tonen
Laten we twee tabellen bekijken: BankAccounts
en een extra tabel genaamd Transactions
.
BankAccounts table
Transactions table
Stel dat we alleen de rekeningnummers willen ophalen die minstens één transactie hebben uitgevoerd.
In deze opdracht is er een query die niet geoptimaliseerd is. De opdracht is om deze op een meer optimale manier te herschrijven.
Hier volgt een lijst met de belangrijkste technieken voor het herschrijven van queries ter verbetering van de optimalisatie:
-
Kolommen Expliciet Specificeren: Vermijd het gebruik van het sterretje (
*
) wildcard en geef kolomnamen expliciet op in queries voor betere prestaties, leesbaarheid en onderhoudbaarheid; -
Minimaliseren van Subqueries: Beperk het gebruik van subqueries om de prestaties van queries te optimaliseren. Overweeg alternatieven zoals joins of afgeleide tabellen om complexiteit en overhead te vermijden;
-
Vermijd Herhaald Gebruik van IN-Operatoren: Beperk het gebruik van de
IN
-operator in queries om prestatieproblemen te voorkomen. Overweeg in plaats daarvan het gebruik vanJOIN
- ofEXISTS
-clausules voor efficiëntere uitvoeringsplannen; -
Logische Organisatie van Joins: Begin SQL-joins met de hoofdtafel en voeg vervolgens gerelateerde tabellen toe om de organisatie van de query en de optimalisatie door de database-engine te verbeteren;
-
Gebruik Restrictieve WHERE-Condities: Verbeter de prestaties van queries door restrictieve condities op te nemen in de
WHERE
-clausule om rijen te filteren en de uitvoeringssnelheid te verhogen; -
Code Herstructureren naar Stored Procedures of Functies: Encapsuleer herhalende code in stored procedures of user-defined functions voor herbruikbaarheid, modulariteit en eenvoudiger onderhoud. Dit kan redundantie verminderen en SQL-queries optimaliseren.
Swipe to start coding
Herschrijf de query op een meer optimale manier. Let erop dat we alleen rekeningnummers willen verkrijgen die ten minste één transactie hebben uitgevoerd (geld overgemaakt naar een andere rekening), gesorteerd in oplopende volgorde.
Opmerking
Gebruik het
LEFT
- ofINNER
-jointype om deze taak uit te voeren.
Oplossing
Bedankt voor je feedback!
Awesome!
Completion rate improved to 4.35single