? En delfråga är en fråga i en annan fråga . En underfråga också kan innehålla en annan underfråga . Dessa sägs vara " nästlade " delfrågor . En koppling är när två eller fler tabeller refereras i " Från "-klausul i frågan . Olika databas motorer kan optimera delfrågor och går annorlunda . Till exempel kommer DB2 : s optimeringsfunktionen förvandla en underfråga till en koppling , om vissa kriterier är uppfyllda . I vissa fall en koppling ger bättre prestanda än en underfråga . Vad gör en delfråga
En underfråga är ett " SELECT " uttalande i " WHERE " eller " SOM " klausul av en yttre " INSERT , " " UPDATE ", " slå ihop" eller " DELETE " uttalande . Den delfråga också kallas " inre query " eller "inre väljer . " Den underfråga kan ha en " FROM " klausul med en eller flera tabeller och kan eventuellt ha en " VAR ", " GROUP BY " eller " SOM " klausul . Det alltid är inom parentes .
Fördelar och nackdelar med delfrågor
Underfrågor är fördelaktiga eftersom de strukturera frågan att isolera varje del av meddelandet , utför samma operation som normalt skulle kräva komplexa kopplingar och fackföreningar och är lättare att läsa . Underfrågor fanns även till grund för den kända " Structured Query Language " ( SQL) på grund av deras lätt läsbar struktur. En nackdel är att du inte kan ändra en tabell och välj från samma tabell i en underfråga i samma SQL-sats . Underfrågor kan också ta längre tid att köra än en gå på grund av hur databasen Optimizer bearbetar dem .
Vad gör en koppling
flesta delfrågor kan skrivas om som kopplingar och mest förenar kan skrivas om som delfrågor . En koppling definierar två eller flera tabeller från en relaterad kolumn . Tabeller vanligtvis är förenade på primära och främmande nycklar . Till exempel kan en anställd tabellen har en primärnyckel för en anställd ID-kolumn , medan en tidrapport bord också har en kolumn anställd id som är en främmande nyckel till den anställde tabellen . Den SQL join kan skrivas som " WHERE employee.empid = timesheet.empid " eller " FROM anställd GÅ tidrapport ON ( employee.empid = timesheet.empid ) . "
Fördelar och nackdelar med Fogar
Den största fördelen med en koppling är att den utförs snabbare. Föreställningen ökningen kanske inte att märkas av slutanvändaren . Men eftersom kolumnerna är specifikt namnges och indexeras och optimeras av databasmotorn , hämtning tid nästan alltid kommer att vara snabbare än en delfråga . Det finns också inre och yttre kopplingar , vänster och höger ansluter sig , full skarvar och kors kopplingar. En nackdel med att använda kopplingar är att de inte är lika lätt att läsa som delfrågor . En annan nackdel är att det kan vara förvirrande om vilken koppling är lämplig typ av gå att använda för att ge korrekt önskade resultatet.