Vilka är fördelarna och nackdelarna med en gå med eller en underfråga?

...

Databasfrågor hämtar specifik information från databasen.

En underfråga är en fråga i en annan fråga. En underfråga kan också innehålla en annan underfråga. Dessa sägs vara "kapslade" underfrågor. En join är när två eller flera tabeller refereras i "Från"-satsen i frågan. Olika databasmotorer kan optimera underfrågor och kopplingar på olika sätt. Till exempel kommer DB2:s optimerare att omvandla en underfråga till en koppling om vissa kriterier uppfylls. I vissa fall ger en join bättre prestanda än en underfråga.

Vad gör en underfråga

En underfråga är en "SELECT"-sats inom "WHERE" eller "HAVING"-satsen i en yttre "INSERT", "UPDATE", "MERGE" eller "DELETE"-sats. Underfrågan kallas också "inre query" eller "inre select." Underfrågan kan ha en "FROM"-sats med en eller flera tabeller och kan valfritt ha en "WHERE", "GROUP BY" eller "HAVING". Det står alltid inom parentes.

Dagens video

Fördelar och nackdelar med subqueries

Delfrågor är fördelaktiga eftersom de strukturerar frågan för att isolera varje del av satsen, utföra samma operation som vanligtvis skulle kräva komplexa sammanslutningar och fackföreningar och är lättare att läsa. Delfrågor var till och med grunden för namnet "Structured Query Language" (SQL) på grund av deras lättläsliga struktur. En nackdel är att du inte kan modifiera en tabell och välja från samma tabell inom en underfråga i samma SQL-sats. Underfrågor kan också ta längre tid att köra än en koppling på grund av hur databasoptimeraren bearbetar dem.

Vad gör en Join

De flesta underfrågor kan skrivas om som kopplingar, och de flesta kopplingar kan skrivas om som underfrågor. En koppling definierar två eller flera tabeller med en relaterad kolumn. Tabeller är vanligtvis sammanfogade på primära och främmande nycklar. Till exempel kan en anställdstabell ha en primärnyckel för en kolumn för anställd-id, medan en tidrapporttabell också har en kolumn för anställd-ID som är en främmande nyckel till anställd-tabellen. SQL-kopplingen kan skrivas som "WHERE anställd.empid = tidrapport.empid" eller "FRÅN anställd JOIN tidrapport PÅ (anställd.empid = tidrapport.empid)."

Fördelar och nackdelar med Joins

Den största fördelen med en join är att den körs snabbare. Prestandaökningen kanske inte märks av slutanvändaren. Men eftersom kolumnerna är specifikt namngivna och indexerade och optimerade av databasmotorn, kommer hämtningstiden nästan alltid att vara snabbare än för en underfråga. Det finns även inre och yttre sammanfogningar, vänster- och högerfogar, helfogar och korsfogar. En nackdel med att använda joins är att de inte är lika lätta att läsa som subqueries. En annan nackdel är att det kan vara förvirrande om vilken sammanfogning som är den lämpliga typen av sammanfogning att använda för att ge rätt önskat resultat.