2017-05-05 5 views
0

Ich arbeite an einer Webanwendung (PHP/MySQL) und ich suche nach der besten Leistung.Eine Ansicht mit einer anderen Ansichtsperformance verbinden

Ich baue eine Ansicht, in dieser Ansicht muss ich mehrere Daten verbinden, aber ich frage mich, was ist die beste Wahl zwischen einer Ansicht mit einer anderen Ansicht oder mit Tabellen zu verbinden.

Um mehr klar zu sein, wenn ich habe:

VIEW_1 = Table_A Table_B beitreten

Und ich brauche in View_2 Daten von Table_A und Table_B, sollte ich

tun View_2 = Table_C Join View_1 ODER View_2 = Tabelle_C Join Tabelle_A Join Tabelle_B

Vielen Dank

Antwort

2

Sehen Sie sich den EXPLAIN-Plan für Ihre spezifische Abfrage an.

Verbinden mit einer Ansicht, anstatt die zugrunde liegenden Tabellen Macht haben eine Auswirkung auf die Leistung - denn wie Atip Roy erklärt, in der Reihenfolge, die Sie durchführen schließt sich für die Leistung wichtig sein kann, und mit einigen der Joins in einer Ansicht könnte verhindern, dass Sie die Joins in der Abfrage optimal sortieren.

Aber das hängt ganz von Ihrer Frage ab - es könnte keinen Unterschied machen.

Und es hat auch Vorteile, eine Ansicht zu verwenden: Es bedeutet, dass die Logik dieser Ansicht nur an einer Stelle gespeichert ist. Sie haben uns ein vereinfachtes Beispiel gegeben, aber im wirklichen Leben ist der Code für Sicht 1 wahrscheinlich komplexer. Wenn Sie an mehreren Stellen die gleiche Logik benötigen, ist es sinnvoll, Code-Duplizierung möglichst zu vermeiden.

Also würde ich überprüfen, ob die Leistung tatsächlich zählt (und wie viel es wichtig ist). Ich würde es vorziehen, die Ansicht zu verwenden, es sei denn, die Ausführung dieser Option wäre nicht akzeptabel.

+0

Ja, Sie haben Recht, aber ich fragte vor allem, weil ich nicht über die Datenbank-Engine-Logik bewusst bin, ich meine vielleicht eine Ansicht irgendwo zwischengespeichert wird, und der Zugriff ist schneller als die gleichen beizutreten ein weiterer Tisch, aber danke für deine Antwort;) – Bobyblanco

1

Es wäre immer eine gute Idee, mit den einzelnen Tabellen fortzufahren, und wenn Sie einen inneren Join verwenden, der die Zeilenanzahl verringern kann, tun Sie es zuerst. Reduzierte Anzahl von Zeilen wird Ihnen immer in Bezug auf die Leistung helfen. Im Hinblick auf den Tabellenbeitritt erhalten Sie möglicherweise nicht jedes Mal die erwähnte Flexibilität.

+0

danke für Ihre Antwort;) – Bobyblanco

Verwandte Themen