Schnell und ohne Aufwand die richtige Treffermenge ermitteln

MySQL und JOINs: Datenbank-Anfragen optimieren

Datenbankanfragen über mehrere Tabellen gestalten sich meist aufwendig und kosten oft Performanz. Internet Magazin zeigt Ihnen, wie Sie schnell und ohne großen Aufwand die richtige Treffermenge ermitteln.

MySQL Logo Symbol

© Archiv

MySQL Logo Symbol

Für die richtige Verknüpfung von Datenbank-Tabellen ist ein gewisses Grundwissen in Mengenlehre und Algebra notwendig. Im Workshop zeigen wir mit einigen Datenbank-Tabellen und MySQL, wie Sie die verschiedenen Formen der Verknüpfung realisieren können.Haben Sie bis jetzt nur wenig mit dem Aufbau von Datenbanken und zugehörigen Tabellen zu tun gehabt, stellt sich natürlich als Erstes die Frage der Notwendigkeit von mehreren Tabellen. Dies hat mit der Normalisierung der Daten zu tun. Natürlich könnten Sie auch alle Informationen beispielsweise zu einem Kunden und seinen Bestellungen in der Tabelle ablegen. Dies führt jedoch zwangsläufig zu einer Reihe von Problemen:• Eine Reihe von Daten wird mehrfach gespeichert, wie beispielsweise die Adresse des Kunden oder dessen Bankverbindung. • Die Tabelle muss ausreichend groß dimensioniert werden, damit auch alle Informationen Platz finden, etwa bei einer größeren Anzahl von Bestellpositionen in einer Bestellung. • Die Aktualisierung einzelner Daten macht es notwendig, alle Datensätze des Kunden zu ermitteln und gegebenenfalls anzupassen.

Dies sind nur einige Gründe, weshalb für relationale Datenbanken das Prinzip der Normalisierung und der dazugehörigen Normalformen geschaffen wurde. Durch die Zerlegung der Informationen in kleinere Pakete wird verhindert, dass Daten mehrfach abgelegt werden.

Die Umsetzung erfolgt auf Basis von Normalisierungsalgorithmen. Diese berücksichtigen die funktionalen Abhängigkeiten der Informationen und zerlegen eine große Gesamttabelle in mehrere kleine. Diese Umwandlung erfolgt in mehreren Schritten, wobei jeder Schritt bestimmte Kriterien erfüllen muss. Wenn Sie tiefer in die Geheimnisse der Normalisierung einsteigen möchten, empfiehlt sich beispielsweise der Wikipedia-Artikel .

Inner Joins

In den folgenden Beispielen werden die einzelnen Datenbank-Abfragen jeweils als Erstes in der Theorie behandelt und anschließend mithilfe der Beispiel-Tabellen und MySQL umgesetzt.

Die einfachste Form eines Joins ist der Inner Join. Dieser verknüpft zwei Tabellen anhand verschiedener gemeinsamer Attribute, wobei die Zielmenge alle Einträge der Tabelle A enthält, zu denen auch ein passendes Gegenstück in der Tabelle B existiert. In der Mengenlehre wird dies als Schnittmenge zwischen den beiden Mengen bezeichnet. Die abstrakte Form des Befehls sieht folgendermaßen aus:

SELECT <Inhalte aus Tabelle A und B>
FROM <Tabelle A>
INNER JOIN <Tabelle B> ON<gemeinsame Felder>
WHERE <Bedingungen>

Die eckigen Klammern werden in einer späteren Datenbankabfrage durch Tabellen- und Feldnamen sowie die einschränkenden Bedingungen ersetzt.

Bei den meisten SQL-Datenbanken können Sie für einen Inner Join die JOIN-Verknüpfung weglassen, da diese die Standard-Variante ist. So lässt sich die Verknüpfung der Beispiel-Tabelle f1_team mit f1_sponsor vereinfacht darstellen:

SELECT t.name, t.jahr, s.sponsor
FROM f1_team t, f1_sponsor s
ON t.name = s.name

Geben Sie beim from-Teil der Abfrage jeder Tabelle einen Kurzbezeichner mit - im Beispiel für das f1_team den Buchstaben t und für den f1_sponsor den Buchstaben s. Damit können Sie die Felder jeweils eindeutig verknüpfen und müssen nicht jedes Mal den vollen Tabellennamen verwenden.

Besonderheiten von MySQL

Neben dem Inner Join gibt es mit dem Cross Join eine sehr ähnliche Verknüpfung. Diese wird bei MySQL analog zum Inner Join verwendet, unterscheidet sich jedoch bei anderen Datenbanken ein wenig.

Ein Cross Join ist, wie der Name bereits vermuten lässt, ein kartesisches Produkt der beiden Tabellen. Es werden also alle Inhalte der Tabelle A mit allen Inhalten der Tabelle B verknüpft. Dabei wird auf Einschränkungen über die WHERE-Klausel verzichtet:

SELECT <Inhalte aus Tabelle A und B>
FROM <Tabelle A>
CROSS JOIN <Tabelle B> ON<gemeinsame Felder>

Eine weitere Besonderheit von MySQL ist der Straight Join. MySQL besitzt einen internen Optimierer für die Abfragen, der versucht, das Ergebnis in optimaler Geschwindigkeit zu ermitteln. Dazu nimmt er intern Verbesserungen vor - was in seltensten Fällen auch zu einer veränderten Datenmenge führen kann.Wenn Sie MySQL explizit anweisen möchten, dass immer erst die linke Tabelle vor der rechten gelesen wird, dann nutzen Sie den Straight Join. Dieser ist - bis auf diese Besonderheit - identisch mit dem Inner Join.

Datenbank-Anfragen optimieren

© Archiv

Der Right Join ist das Gegenstück zum Left Join, startet mit der rechten Tabelle als Ausgangsmenge und selektiert die passenden Einträge aus der linken hinzu.

Links und rechts

Bei Inner Join und Cross Join sind immer nur die Datensätze zum Tragen gekommen, die in beiden Tabellen vorhanden waren. Benötigen Sie alle Datensätze aus der ersten Tabelle, welche Ihren Selektionskriterien entsprechen und möchten dazu Daten aus der zweiten Tabelle ergänzen, benötigen Sie eine Alternative.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".