Utfordring: Spørringsoptimalisering
Anta at vi ønsker å hente kun kontonumre som har utført minst én transaksjon.
I denne oppgaven har vi en spørring som ikke er optimalisert. Din oppgave er å skrive den om på en mer optimal måte.
Her er en liste over de viktigste teknikkene for omskriving av spørringer for å forbedre optimaliseringen:
-
Spesifiser kolonner eksplisitt: i stedet for å bruke stjerne (
*), oppgi kolonnenavn eksplisitt i spørringer for bedre ytelse, lesbarhet og vedlikeholdbarhet; -
Minimer bruk av underforespørsler: reduser bruken av underforespørsler for å optimalisere spørringsytelsen. Vurder alternativer som JOINs eller avledede tabeller for å unngå kompleksitet og overhead;
-
Unngå gjentatt bruk av IN-operatoren: begrens bruken av
IN-operatoren i spørringer for å forhindre ytelsespåvirkning. Vurder i stedet å brukeJOINellerEXISTSfor mer effektive kjøreplaner; -
Organiser JOINs logisk: start SQL JOINs med hovedtabellen og deretter JOIN med relaterte tabeller for å optimalisere spørringsorganisering og databaseoptimalisering;
-
Bruk restriktive WHERE-betingelser: forbedre spørringsytelsen ved å inkludere restriktive betingelser i
WHERE-klasulen for å filtrere rader og øke kjørehastigheten; -
Refaktorer kode til lagrede prosedyrer eller funksjoner: kapsle inn gjentakende kode i lagrede prosedyrer eller brukerdefinerte funksjoner for gjenbruk, modularitet og enklere vedlikehold. Dette kan redusere redundans og optimalisere SQL-spørringer.
Swipe to start coding
Din oppgave er å skrive en spørring som returnerer en liste over alle kontonumre som har utført minst én transaksjon (overført penger til en annen konto). Resultatene skal sorteres i stigende rekkefølge etter kontonummer.
For å gjøre spørringen mer effektiv og lesbar, følg disse trinnene:
- Velg kun kolonnen
account_number; - Bruk en
INNER JOINmellom tabelleneBankAccountsogTransactions; - Ikke bruk operatoren
INeller underforespørsler; - Sorter resultatet etter
account_numberi stigende rekkefølge.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you show me the original unoptimized query?
What database system are we using for this task?
Can you provide an example of the tables involved?
Fantastisk!
Completion rate forbedret til 4.55
Utfordring: Spørringsoptimalisering
Sveip for å vise menyen
Anta at vi ønsker å hente kun kontonumre som har utført minst én transaksjon.
I denne oppgaven har vi en spørring som ikke er optimalisert. Din oppgave er å skrive den om på en mer optimal måte.
Her er en liste over de viktigste teknikkene for omskriving av spørringer for å forbedre optimaliseringen:
-
Spesifiser kolonner eksplisitt: i stedet for å bruke stjerne (
*), oppgi kolonnenavn eksplisitt i spørringer for bedre ytelse, lesbarhet og vedlikeholdbarhet; -
Minimer bruk av underforespørsler: reduser bruken av underforespørsler for å optimalisere spørringsytelsen. Vurder alternativer som JOINs eller avledede tabeller for å unngå kompleksitet og overhead;
-
Unngå gjentatt bruk av IN-operatoren: begrens bruken av
IN-operatoren i spørringer for å forhindre ytelsespåvirkning. Vurder i stedet å brukeJOINellerEXISTSfor mer effektive kjøreplaner; -
Organiser JOINs logisk: start SQL JOINs med hovedtabellen og deretter JOIN med relaterte tabeller for å optimalisere spørringsorganisering og databaseoptimalisering;
-
Bruk restriktive WHERE-betingelser: forbedre spørringsytelsen ved å inkludere restriktive betingelser i
WHERE-klasulen for å filtrere rader og øke kjørehastigheten; -
Refaktorer kode til lagrede prosedyrer eller funksjoner: kapsle inn gjentakende kode i lagrede prosedyrer eller brukerdefinerte funksjoner for gjenbruk, modularitet og enklere vedlikehold. Dette kan redusere redundans og optimalisere SQL-spørringer.
Swipe to start coding
Din oppgave er å skrive en spørring som returnerer en liste over alle kontonumre som har utført minst én transaksjon (overført penger til en annen konto). Resultatene skal sorteres i stigende rekkefølge etter kontonummer.
For å gjøre spørringen mer effektiv og lesbar, følg disse trinnene:
- Velg kun kolonnen
account_number; - Bruk en
INNER JOINmellom tabelleneBankAccountsogTransactions; - Ikke bruk operatoren
INeller underforespørsler; - Sorter resultatet etter
account_numberi stigende rekkefølge.
Løsning
Takk for tilbakemeldingene dine!
single