2008-09-17 11 views
1

Was sind die möglichen Vor- und Nachteile von jeder dieser Abfragen bei verschiedenen Datenbanken, Konfigurationen usw.? Gibt es jemals eine Zeit, in der man effizienter wäre als die andere? Und umgekehrt? Gibt es einen noch besseren Weg? Kannst du erklären warum? 1Vergleichen von MySQL Kreuz und inneren Joins

Abfrage:

SELECT 
    * 
FROM 
    table_a, table_b, table_c 
WHERE 
    table_a.id = table_b.id AND 
    table_a.id = table_c.id AND 
    table_a.create_date > DATE('1998-01-01'); 

Abfrage 2:

SELECT 
    * 
FROM 
    table_a 
INNER JOIN table_b ON 
    table_a.id = table_b.id 
INNER JOIN table_c ON 
    table_a.id = table_c.id 
WHERE 
    table_a.create_date > DATE('1998-01-01'); 

Antwort

2

Gleiche Abfrage, andere Revision der SQL-Spezifikation. Der Abfrageoptimierer sollte denselben Abfrageplan für diese Abfragen erstellen.

-1

Ich bin damit einverstanden, es ist ein bisschen zu viel, wie Hausaufgaben klingen!

Wenn es keine Hausaufgaben ist, dann denke ich, die einfachste Antwort ist Lesbarkeit.

Wie bereits erwähnt, werden beide Abfragen den gleichen Ausführungsplan erzeugen. Wenn dies der Fall ist, dann müssen Sie sich nur um die Wartbarkeit kümmern.

0

Nein. Ich teile gerade eine große, überforderte Datenbank mit einigen Kollegen und versuche, mir einige Möglichkeiten zu überlegen, wie man mehr Prozessor für unser Geld bekommen kann. Ich habe mich online umgeschaut, aber für einige Fragen wie diese keine gute Erklärung gefunden.

Entschuldigung für klingende Hausaufgaben-y. Ich denke, ich habe zu viele Jahre als TA verbracht.

0

Eigentlich denke ich Abfrage 2 ist besser lesbar. Denken Sie darüber nach, wenn Sie 5,6 oder 7 Tabellen sagen, wenn Sie die where-Klausel in Abfrage eins treffen. Im Anschluss könnten die Joins chaotisch werden.

Bezüglich der Leistung habe ich keine Ahnung. Ich wette, wenn Sie auf die MySQL-Website gehen, gibt es dort Informationen - wahrscheinlich Beispiele für Joins.

Beruflich habe ich nur an einem Projekt gearbeitet. Aber es war ein großer, und sie folgten immer dem Format von Frage 2. Dies verwendete jedoch Microsoft SQL Server.

Verwandte Themen