Hvad er fordelene og ulemperne ved en join eller en underforespørgsel?

October 3

Hvad er fordelene og ulemperne ved en join eller en underforespørgsel?

En underforespørgsel er en forespørgsel i en anden forespørgsel. En underforespørgsel også kan indeholde en anden underforespørgsel. Disse siges at være "indlejrede" underforespørgsler. En deltage er, når to eller flere tabeller der henvises til i "Fra" klausul af forespørgslen. Forskellige database motorer kan optimere underforespørgsler og slutter sig forskelligt. For eksempel vil DB2 s optimizer omdanne en underforespørgsel til en deltage, hvis visse kriterier er opfyldt. I nogle tilfælde, en join giver bedre resultater end en underforespørgsel.

Hvad skaber en underforespørgsel


En underforespørgsel er en "SELECT" erklæring inden for "WHERE" eller "have" klausul om en ydre "INSERT," "UPDATE", "MERGE" eller "SLET" erklæring. Den underforespørgsel også kaldes "indre forespørgslen" eller "indre vælge." Den underforespørgsel kan have en "FROM" klausul med en eller flere tabeller og kan eventuelt have en "WHERE", "GROUP BY" eller "have" klausul. Det er altid i parentes.

Fordele og ulemper ved Underforespørgsler


Underforespørgsler er fordelagtige, fordi de strukturere forespørgslen at isolere hver del af oversigten, udføre den samme operation, der normalt ville kræve kompleks slutter og fagforeninger og er lettere at læse. Underforespørgsler var selv grundlaget for betegnelsen "Structured Query Language" (SQL) på grund af deres let læselige struktur. En ulempe er, at du ikke kan ændre en tabel, og vælg fra samme tabel i en underforespørgsel i samme SQL-sætning. Underforespørgsler kan også tage længere tid at udføre end en deltage på grund af hvordan databasen optimizer behandler dem.

Hvad gør en Deltag


De fleste underforespørgsler kan omskrives slutter, og de fleste sammenføjninger kan omskrives til underforespørgsler. En slutte definerer to eller flere tabeller med en relateret kolonne. Tabeller normalt samles på primære og fremmede nøgler. For eksempel kan en medarbejder bord have en primær nøgle af en medarbejder id kolonne, mens en timeseddel bord har også en medarbejder id kolonne, der er en fremmed nøgle til medarbejderen bordet. SQL deltag kan skrives som "Hvor employee.empid = timesheet.empid" eller "Fra medarbejder JOIN timeseddel ON (employee.empid = timesheet.empid)."

Fordele og ulemper ved slutter


Den vigtigste fordel ved en sammenkædning er, at det udfører hurtigere. Stigningen ydeevne muligvis ikke være mærkbar af slutbrugeren. Men fordi søjlerne specifikt er navngivet og indekseret og optimeret af database motor, vil hentning tid næsten altid være hurtigere end en underforespørgsel. Der er også indre og ydre slutter, venstre og højre slutter, fuld sammenføjninger og indlæg slutter. En ulempe ved anvendelse slutter, er, at de ikke er så let at læse som underforespørgsler. En anden ulempe er, at det kan være forvirrende, som forbinder den relevante type slutte at anvende til opnåelse af den korrekte ønskede resultat sæt.