Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Beispiel mit "Natural Join" und "IN" intern unterschiedlich umgesetzt ?

Empfohlene Antworten

Veröffentlicht

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 ?

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 :P

und bin darauf gekommen das variante 1 die schnellere von beiden ist

aber versuch das mit explain mal selbst nachzuvollziehn ;)

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'

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.