In unserem Projekt schreiben wir oft komplexe Joins über wie 3 Tabellen. Erzielen wir Leistungsvorteile durch die Verwendung von Views oder dienen sie nur dazu, die Lebensdauer von Query Writern zu erleichtern? Wenn es darauf ankommt, verwenden wir MySQL. Wenn dadurch irgendwelche Vorteile erzielt werden (andere als einfachere Abfragen natürlich), leuchtet bitte auf.Erhalte ich Leistungsvorteile durch die Verwendung von VIEWs anstelle von JOINs?
Antwort
Im Allgemeinen bieten normale Ansichten keine große Leistungsverbesserung gegenüber dem Ausführen einer Abfrage. Die meisten Datenbanksysteme, einschließlich MySql (ich glaube, es war eine Weile her, seit ich sie benutzt habe), bieten eine Art indizierte oder materialisierte Ansichtsfähigkeit. In der Regel müssen solche Sichten eine ganze Reihe von Einschränkungen aufweisen, doch sobald sie erstellt sind, werden die Ergebnisse der Backing-Abfrage in einer physischen Tabelle zwischengespeichert (im Falle von indizierten SQL Server-Sichten eine Tabelle in TempDB). Der Datenbankserver ist dann verantwortlich für das Verfolgen von Änderungen an der zugrunde liegenden Abfrage und das Aktualisieren der zwischengespeicherten Kopie. Abfragen mit einer solchen indizierten/materialisierten Ansicht sind im Allgemeinen viel schneller, in der Reihenfolge der Abfrage einer normalen Tabelle.
Ansichten sind einfach logische Tabellen, die nicht anders sind, als wenn Sie zur Laufzeit dieselbe SQL ausführen. Der einzige Unterschied wäre eine Art von materialisierter Ansicht, wie Orakel verwendet, die wie eine zwischengespeicherte Ansicht ist.
Ich wollte deine Antwort zusammen mit jrista als die richtige Antwort markieren, aber anscheinend konnte nur eine Antwort als solche markiert werden, also gab ich deine Antwort eine hohe Stimme. –
Ansichten (normale Ansichten) bieten keine Leistungsvorteile an sich, wenn nicht indizierte Sichten (auch als materialisierte Ansicht bezeichnet) verwendet werden, die viele Einschränkungen aufweisen. Nicht alle Ansichten konnten materialisiert werden.
- 1. Leistungsvorteile von striktem Aliasing
- 2. Zähle ohne Verwendung von Joins
- 3. Leistungsvorteile von nativen Apache Tomcat-Konnektoren
- 4. Laravel Eloquent Joins Verwendung von gehört zu
- 5. Erhalte leere Seite anstelle von 401 Fehlerseite
- 6. Jede signifikante Leistungsverbesserung durch die Verwendung von bitweisen Operatoren anstelle von einfachen int-Summen in C#?
- 7. Verwendung von Cassandra anstelle von Memcache?
- 8. Verwendung der Funktion TABLE_DATE_RANGE in Views
- 9. Welche Vorteile bietet die Verwendung von BIO_printf() anstelle von printf()?
- 10. Wie erzwinge Composer die Verwendung von https: // anstelle von git: //?
- 11. Login durch Instagram App anstelle von Safari
- 12. Wie erhalte ich einen Wert nach der Verwendung von Setx?
- 13. Komplikationen durch Verwendung von Inlineframes
- 14. Fehler durch Verwendung von Funktion anstelle von sub in einzeiliger Lambda-Ausdruck
- 15. Verwendung von Vergleichen anstelle einer for-Schleife
- 16. Verwendung reduceLeft anstelle von foldLeft in scala
- 17. Duplizieren von Ereignissen durch Verwendung von clone()
- 18. C++ const_cast Verwendung anstelle von C-Casts
- 19. Rails Reihenfolge von String-Spalte Wert durch Joins
- 20. In Laravel, erhalte ich die Ansicht des aktuellen Benutzers als Anhänger selbst anstelle von Anhängern
- 21. Wie erhalte ich von meiner App die Nachricht "Net not connected" anstelle des Absturzes
- 22. Konfigurieren von IntelliJ für die Verwendung von Groovy Compiler anstelle von Java Compiler
- 23. Verwenden von SQL-JOINs
- 24. SQL - Vorteile von JOINs?
- 25. Wird die Firebird-Leistung durch die Verwendung von "Festhalten" beeinträchtigt?
- 26. Warum bekomme ich anstelle von Text Quadrate?
- 27. Verwendung von __VA_ARGS__ in einer C-Funktion anstelle von Makro?
- 28. Ich erhalte das Ergebnis nicht Ich erwarte Verwendung von readLine() in Java
- 29. Laravel 5: Verwendung von SHA1 anstelle von Bcrypt
- 30. python: Overhead zur Verwendung von Klassen anstelle von Wörterbüchern?
Thnx zur Klärung –