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

...

Databaseforespørgsler henter specifik information fra databasen.

En underforespørgsel er en forespørgsel i en anden forespørgsel. En underforespørgsel kan også indeholde en anden underforespørgsel. Disse siges at være "indlejrede" underforespørgsler. En joinforbindelse er, når der henvises til to eller flere tabeller i "Fra"-sætningen i forespørgslen. Forskellige databasemotorer kan optimere underforespørgsler og joinforbindelser forskelligt. For eksempel vil DB2's optimizer transformere en underforespørgsel til en joinforbindelse, hvis visse kriterier er opfyldt. I nogle tilfælde giver en joinforbindelse bedre ydeevne end en underforespørgsel.

Hvad gør en underforespørgsel

En underforespørgsel er en "SELECT"-sætning i "WHERE"- eller "HAVING"-sætningen i en ydre "INSERT", "UPDATE", "MERGE" eller "DELETE"-sætning. Underforespørgslen kaldes også den "indre forespørgsel" eller "indre udvælgelse". Underforespørgslen kan have en "FROM"-klausul med en eller flere tabeller og kan eventuelt have en "WHERE", "GROUP BY" eller "HAVING"-klausul. Den står altid i parentes.

Dagens video

Fordele og ulemper ved underforespørgsler

Underforespørgsler er fordelagtige, fordi de strukturerer forespørgslen for at isolere hver del af sætningen, udføre den samme operation, som normalt ville kræve komplekse sammenslutninger og fagforeninger og er lettere at Læs. Underforespørgsler var endda grundlaget for navnet "Structured Query Language" (SQL) på grund af deres letlæselige struktur. En ulempe er, at du ikke kan ændre en tabel og vælge fra den samme tabel i en underforespørgsel i den samme SQL-sætning. Underforespørgsler kan også tage længere tid at udføre end en joinforbindelse på grund af, hvordan databaseoptimeringsværktøjet behandler dem.

Hvad gør en Join

De fleste underforespørgsler kan omskrives som joinforbindelser, og de fleste joinforbindelser kan omskrives som underforespørgsler. En join definerer to eller flere tabeller med en relateret kolonne. Tabeller samles normalt på primære og fremmede nøgler. For eksempel kan en medarbejdertabel have en primær nøgle til en medarbejder-id-kolonne, mens en timeseddeltabel også har en medarbejder-id-kolonne, der er en fremmednøgle til medarbejdertabellen. SQL-joinet kan skrives som "WHERE medarbejder.empid = timeseddel.empid" eller "FRA medarbejder JOIN timeseddel TIL (medarbejder.empid = timeseddel.empid)."

Fordele og ulemper ved sammenføjninger

Den største fordel ved en join er, at den udføres hurtigere. Ydeevneforøgelsen er muligvis ikke mærkbar af slutbrugeren. Men fordi kolonnerne er specifikt navngivet og indekseret og optimeret af databasemotoren, vil hentetiden næsten altid være hurtigere end for en underforespørgsel. Der er også indre og ydre sammenføjninger, venstre og højre sammenføjninger, hel sammenføjninger og krydssamlinger. En ulempe ved at bruge joins er, at de ikke er så lette at læse som underforespørgsler. En anden ulempe er, at det kan være forvirrende med hensyn til, hvilken sammenføjning der er den passende type sammenføjning at bruge for at give det korrekte ønskede resultatsæt.