Antwort

2

Dies ist zu lang für einen Kommentar.

Zuerst. Verwenden Sie nicht NATURAL JOIN. Es ist ein Fehler, der darauf wartet, zu passieren. NATURAL JOIN verwendet Felder, die zufällig denselben Namen für die Schlüssel JOIN haben. Es berücksichtigt nicht einmal deklarierte Fremdschlüsselbeziehungen.

Sie können heute eine Abfrage schreiben, und kleine Änderungen an einer zugrunde liegenden Tabelle können die Abfrage vollständig unterbrechen (ich gebe zu, dies kann auch auf andere Weise passieren). Die peinliche Sache, obwohl, dass die Logik in der Abfrage nicht sichtbar ist. Verwenden Sie stattdessen USING oder ON.

Zweitens haben die meisten Datenbanken eine Optimierungsphase. Diese Phase bestimmt die beste Reihenfolge für die Verarbeitung. Daher hat selbst das Ändern der Reihenfolge keine Auswirkungen - weil das Datenbankmodul über die Reihenfolge entscheidet (es sei denn, Sie überschreiben es mit einem Hinweis).

+0

Danke für die Erklärung! Ich sehe, wie es jetzt funktioniert. Wie bestimmen die meisten Datenbanken die Reihenfolge für ihre Optimierung? – RhumB

+0

Wie bestimmt es? Es untersucht Tabellenstatistiken, Indizes, Caches, Arbeitsspeicher und alle möglichen Dinge und versucht, den schnellsten Weg zur Rückgabe von Daten zu finden. Wenn ein Index beispielsweise angibt, dass die Filterung in Tabelle X zu einer erheblichen Reduzierung der Datensätze für eine nachfolgende Verknüpfung führt, kann dies möglicherweise zuerst geschehen. Alles, was Sie wissen müssen, ist, dass eine Datenbank so schnell wie möglich das richtige Ergebnis liefert. Sie können die gleiche funktionale Abfrage auf ein Dutzend verschiedene Arten schreiben und die meiste Zeit hinter den Kulissen erhalten Sie einen identischen Abfrageplan unabhängig davon, in welcher Reihenfolge Sie die Dinge einfügen –

Verwandte Themen