Für seinen Optimierungsprozess, verbindet es sich mit der Beziehung, die ein größeres Ergebnis hat oder das eine kleinere Ergebnis hat?Natürliche Join 3 Beziehungen, die Reihenfolge gibt bessere Leistung?
Antwort
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).
- 1. Beeinflusst Sql JOIN die Leistung?
- 2. Umgekehrte natürliche Reihenfolge mit collections.reverseOrder()
- 3. Kann ein INNER JOIN eine bessere Leistung bieten als EXISTS
- 4. Bessere Leistung für Hintergrundbilder
- 5. mapply für eine bessere Leistung
- 6. Was ist "natürliche Reihenfolge" in einer TreeMap?
- 7. Natürliche Join Abfrageergebnisse zeigen das gleiche wie die Spaltenüberschrift
- 8. Warum bessere Isolationsstufe eine bessere Leistung in SQL Server
- 9. Ist die Leistung von INNER JOIN von der Reihenfolge der Tabellen abhängig?
- 10. Implementieren von UUID für bessere Leistung
- 11. Bessere Lösung als Links Join-Unterabfragen?
- 12. Gibt es eine bessere Möglichkeit, diese mysql-Abfrage mit internen Join-Befehlen zu erstellen?
- 13. Haben kurze Anweisungen eine bessere Leistung?
- 14. Bessere Leistung: OnDataBound oder iterieren auf PreRender
- 15. Zend Framework 2, wie die ACL für bessere Leistung Cache
- 16. Ersetzen Sie verschachtelte foreach für bessere Leistung
- 17. Eclipse optimierte Konfiguration für bessere Leistung
- 18. Welcher dieser Ansätze bietet eine bessere Leistung für große Tabellen?
- 19. Tabelle Join Reihenfolge in Postgres
- 20. Die natürliche Sprache Sätze Generation
- 21. Yii2 Join Beziehungen für mehrere Tabellen
- 22. JOIN multiple Tabelle mit Beziehungen in Yii2
- 23. SQL Join zwei Tabellen ohne Beziehungen
- 24. Inner join 3 Tabelle
- 25. Leistung Kosten für die Verwendung von Primärschlüssel in Reihenfolge von
- 26. ASP.NET MVC 3 Razor -leistung
- 27. Gibt es eine bessere Designoption?
- 28. Gibt es eine bessere IDOMImplementation als MSXML?
- 29. Leistung von innerem Join im Vergleich zu Kreuz Join
- 30. Python 3 Join Daten von großen Dateien, die sortiert sind
Danke für die Erklärung! Ich sehe, wie es jetzt funktioniert. Wie bestimmen die meisten Datenbanken die Reihenfolge für ihre Optimierung? – RhumB
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 –