Veröffentlicht 8. Mai 200916 j 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 ?
8. Mai 200916 j 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
15. Mai 200916 j 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'
16. Mai 200916 j 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 ^^
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.