Database Reference
In-Depth Information
INNER JOIN
liefert nur dann eine Zeile zurück,
wenn die Spaltenwerte über-
einstimmen
.Daeskeine
venues
.
venue
_
id
smitdemWert
Null
geben kann,
liefern die beiden
NULL
-
eventsvenue
_
id
s nichts zurück. Wenn Sie unabhängig
von einem Veranstaltungsort alle Events abrufen wollen, müssen Sie einen
LEFT OUTER JOIN
(kurz
LEFT JOIN
) verwenden.
SELECT
e.title, v.name
FROM
events e
LEFT JOIN
venues v
ON
e.venue
_
id = v.venue
_
id;
title | name
-----------------+----------------
LARP Club | Voodoo Donuts
April Fools Day |
Christmas Day
|
Wenn Sie das Gegenteil brauchen, alle Veranstaltungsorte und nur passende
Events, verwenden Sie einen
RIGHT JOIN
. Schließlich gibt es noch den
FULL
JOIN
, also die Vereinigung von
LEFT
und
RIGHT
, bei der Sie garantiert alle
Werte aus beiden Tabellen zurückerhalten.
Schnelle Lookups per Indexierung
Die Geschwindigkeit von PostgreSQL (und anderen RDBMS) basiert auf der
effizienten Verwaltung von Datenblöcken, der Reduzierung von Leseopera-
tionen, der Query-Optimierung und anderen Techniken. Doch sie rufen Er-
gebnisse nur schnell ab. Wenn wir einenTitel wie
Christmas Day
aus der
events
-Tabelle abrufen, muss der Algorithmus jede Zeile auf einen Treffer
untersuchen. Ohne einen
Index
muss jede Zeile von der Platte gelesen wer-
den, um herauszufinden, ob die Query sie zurückgeben muss.
matches "Christmas Day"? No.
LARP Club | 2 | 1
matches "Christmas Day"? No.
April Fools Day | | 2
matches "Christmas Day"? Yes!
Christmas Day | | 3
Ein Index ist eine spezielle Datenstruktur, die aufgebaut wird, um bei Ab-
fragen ein vollständiges Durchsuchen der Tabelle zu vermeiden. Wenn Sie
CREATE TABLE
-Befehle ausgeführt haben, könnten Ihnen Meldungen wie die
folgende aufgefallen sein:
CREATE TABLE
/
PRIMARY KEY
will
create
implicit
index
"
events
_
pkey
"\
for
table
"
events
"