2017-06-23 5 views
-1

Ich muss auf Papier einen guten physischen Plan für eine Postgresql-Abfrage mit mehreren natürlichen Join schreiben, ist es das gleiche wie die Behandlung einer Abfrage mit einem einfachen Join oder sollte ich einen anderen Ansatz verwenden?Wie optimiert man eine Abfrage mit mehreren Joins?

ich auf diesem arbeite, übrigens

SELECT zname 
FROM Cage natural join Animal natural join DailyFeeds natural join Zookeeper 
WHERE shift=’const’ AND clocation=’const’; 
+0

schreibe nicht 'NATURAL JOIN', schreibe' INNER JOIN' oder 'JOIN' stattdessen, da sie präziser sind. 'NATURAL JOIN' bedeutet, dass Sie alle Spalten anschließen möchten, die den gleichen Namen haben, die irreführend sein können und Probleme verursachen, wenn Refactoring. – andreim

+0

Natural Join ist in der Regel eine schlechte Angewohnheit. Es verbindet alle Namen, die die beiden Tabellen gemeinsam haben, was möglicherweise nicht das ist, was Sie wollen. (Stellen Sie sich vor, was passieren würde, wenn beide Tabellen eine 'status'-Spalte haben.) – joop

+0

1." simple join "ist nicht klar. Meinst du "single beitreten"? "innere Verbindung"? Meinst du einen Algorithmus, der in deiner Klasse "einfach" heißt? 2. Details sind wichtig. Was genau sollten Sie von der Datenbank/den Tabellen annehmen? 3. Bitte lesen Sie [fragen] und [Wie frage ich und beantworte Hausaufgabenfragen?] (Http://meta.stackexchange.com/questions/10811/how-do-i-ask-and-answer-homework-questions) . Was ist dein Referenzlehrbuch? Fassen Sie zusammen, was Sie wissen und was Sie tun können. Aktuelle Details eines Ortes in deiner Arbeit, wo du feststeckst. Ansonsten ist eine "Antwort" ein Lehrbuchkapitel. – philipxy

Antwort

0

von Oracle

A NATURAL JOIN ist ein JOIN-Operation, die eine implizite Join Klausel für Sie erstellt auf der Grundlage der gemeinsame Spalten in den beiden Tabellen sind beigetreten. Gemeinsame Spalten sind Spalten, die in den beiden Tabellen den gleichen Namen haben.

ich denke, die oben beantwortet folgende

ist es das gleiche wie eine Abfrage mit einem einfachen Join Behandlung oder sollte ich einen anderen Ansatz verwenden?

Ich hoffe, es hilft.

Verwandte Themen