Hans0001 Geschrieben 8. Mai 2009 Teilen Geschrieben 8. Mai 2009 Gegeben ist folgendes relationales Schema: Buch(BuchID, AID->Autor, Titel) Autor(AutorID, Vorname, Nachname) Gesucht ist ein SQL Query der folgende Frage beantwortet: "Welche Bücher wurden von Autoren mit dem Vornamen "Peter" geschrieben ? Variante 1 (Natural Join): SELECT BuchID FROM Buch,Autor WHERE AID = AuthorID AND Vorname='Peter' Variante 2 (IN): SELECT BuchID FROM Buch WHERE AID IN (SELECT AutorID FROM Autor WHERE Vorname='Peter' ______________________________________________________________ Nun zur Frage: Gibt es einen Unterschied zwischen den beiden Varianten oder werden sie intern gleich umgesetzt bzw. ist eine von beiden peformanter ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T3D Geschrieben 8. Mai 2009 Teilen Geschrieben 8. Mai 2009 Gegeben ist folgendes relationales Schema: Buch(BuchID, AID->Autor, Titel) Autor(AutorID, Vorname, Nachname) Gesucht ist ein SQL Query der folgende Frage beantwortet: "Welche Bücher wurden von Autoren mit dem Vornamen "Peter" geschrieben ? Variante 1 (Natural Join): SELECT BuchID FROM Buch,Autor WHERE AID = AuthorID AND Vorname='Peter' Variante 2 (IN): SELECT BuchID FROM Buch WHERE AID IN (SELECT AutorID FROM Autor WHERE Vorname='Peter' ______________________________________________________________ Nun zur Frage: Gibt es einen Unterschied zwischen den beiden Varianten oder werden sie intern gleich umgesetzt bzw. ist eine von beiden peformanter ? setz mal vor deine SELECT befehl ein "explain" das zeigt dir an was der SQL macht hab das ganze gerade mal durchgespielt.. allerdings mit nem anderen bsp und bin darauf gekommen das variante 1 die schnellere von beiden ist aber versuch das mit explain mal selbst nachzuvollziehn Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
toobeee Geschrieben 15. Mai 2009 Teilen Geschrieben 15. Mai 2009 SELECT BuchID FROM Buch,Autor WHERE AID = AuthorID AND Vorname='Peter' das bildet doch das kartesiche Produkt und ist kein natural join?! natural join: select buchid from buch natural join autor where AID = AuthorID AND Vorname='Peter' (ich weis jetzt nicht in welcher tabelle welche felder drin sind) inner join select buchid from buch b inner join autor a on b.aid = a.authorid and a.vorname = 'Peter' Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_n4p_ Geschrieben 16. Mai 2009 Teilen Geschrieben 16. Mai 2009 SELECT BuchID FROM Buch,Autor WHERE AID = AuthorID AND Vorname='Peter' das bildet doch das kartesiche Produkt und ist kein natural join?! richtig deine select sind allerdings vollkommen gleichwertig in den meisten fällen sind joins schneller als subselects die das "gleiche" tun. braucht ein join allerdings ein DISTINCT und ein subquery nicht sind beide etwa gleich schnell. dafür sind subquerys in den meisten fällen leichter zu lesen ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.