Was ist der Unterschied zwischen SELECT-Daten aus der Tabelle direkt oder aus der Sicht?
Und was ist die beste Verwendung für jeden?Unterschied zwischen der Auswahl aus der Tabelle direkt und Ansicht
Antwort
Laut Microsoft gibt es eine Performance-Vorteil, wenn Sie indizierte Ansichten in SQL Server 2000/2005/2008 verwenden.
Indizierte Sichten können die Abfrageleistung auf folgende Arten erhöhen
1. Aggregationen können im Voraus berechnet und im Index gespeichert werden, um teure Berechnungen während der Abfrageausführung zu minimieren.
2. Tabellen können vorgemischt und der resultierende Datensatz gespeichert werden.
3. Kombinationen von Joins oder Aggregationen können gespeichert werden
Aber genauso wie Indizes auf Tabellen, Indizes auf Ansichten Erfahrung Modifikationsaufwand. Fügen Sie also nur dann einen Index zu einer Ansicht hinzu, wenn der Vorteil seiner Geschwindigkeit beim Ausführen die Zeit übersteigt, die zum Aktualisieren des Index der Ansicht benötigt wird.
Die folgenden Links geben weitere Informationen dazu (wann wann was zu verwenden ist).
In den meisten Datenbanken sind sie funktional austauschbar (abgesehen von materialisierten Ansichten, die ohnehin etwas völlig anderes sind). Es gibt zwei häufige Gründe für das Erstellen von Ansichten. 1. Ein Abstraktions (und Spalten-Aliasing) -Mechanismus und 2. Für Berechtigungen und Zugriffskontrolle. Aber was die Effizienz betrifft, ist das kein Problem.
Nicht wahr. Bei einigen Datenbanken treten Leistungsprobleme auf, wenn Ansichten verschachtelt sind. –
Und haben Sie Referenzen? Das scheint sehr unwahrscheinlich, (obwohl ich deshalb in den meisten Datenbanken gesagt habe.) – dkretz
Ja. In Oracle können sich verschachtelte Views schlecht verhalten. Wir haben dies selbst erlebt, als wir erweiterte Abfragen mit denselben Abfragen verglichen haben, die als mehrere Ansichten in Oracle definiert wurden. –
Betrachten Sie es auf diese Weise:
Eine Ansicht ist nur eine select-Anweisung, die auf dem Server lebt und von der SQL-Engine erstellt.
Normalerweise werden Ansichten verwendet, um die Ergebnisse aus der Tabelle zu begrenzen/zu vereinfachen.
Grüße K
Es hängt von der Datenbank und die Definition der Ansicht.
Eine einfache Ansicht, die Aliase Spalten oder einfache Berechnungen durchführt unterscheidet sich nicht von der direkten Abfrage.
In einigen Fällen können die Ansichten jedoch wesentlich langsamer sein. Ein Beispiel: Wenn Sie in Oracle View-Abfragen zu sehr verschachteln (z. B. eine Ansicht verwendet eine andere als Tabelle, die eine andere verwendet, usw.), können Sie eine schreckliche Leistung erzeugen.
Im Allgemeinen müssen Sie mit der spezifischen Datenbank und den fraglichen Abfragen testen.
Sind Sie der Ansicht, dass die Verwendung der Ansicht Ihre Abfrage langsamer macht als den Inline-Subselect, den sie repräsentiert? – Khb
Wenn es ineffizient ist, würde ich wetten, dass dies daran liegt, dass die Ansichten unangemessen mehr Felder und/oder Joins hinzufügen, als benötigt werden. Aber es ist immer noch die gleiche Leistung wie die entsprechende einzelne SQL-Anweisung. – dkretz
Nein, wir haben versucht, die SAME-Abfragen nur in Sichten oder in Auswahl mit Unterabfragen zu verwenden. Letzteres kann viel schneller sein. Warum? Keine Ahnung, Orakel ist voller Geheimnisse und nicht auf eine gute Art und Weise. –
- 1. Auswahl der Zeile aus der Tabelle
- 2. Was ist der Unterschied zwischen select * from Tabelle und wählen Sie Namen, Handy aus der Tabelle
- 3. Auswahl der verglichenen Paare aus Tabelle
- 4. Der Unterschied zwischen einer 'Ansicht' und 'Basis' Relation
- 5. Was ist der Unterschied zwischen einer Ansicht und einem Stream?
- 6. Was ist der Unterschied zwischen der Methode swapadapter und der Methode notifydatasetchange in der Ansicht Recycler?
- 7. Unterschied zwischen der klassischen und Prototypvererbung
- 8. Der Unterschied zwischen OnActionExecuted und OnResultExecuting
- 9. Was der funktionale Unterschied zwischen der Verwendung eines EntityManager direkt und JpaRepository
- 10. Der Unterschied zwischen bash und Python Rohre
- 11. Auswahl aller Felder der Tabelle A, aber Auswahl der Felder der Tabelle B
- 12. Unterschied zwischen Ansicht und Vorlage in Grails
- 13. Unterschied zwischen einer AppCompat-Ansicht und einer normalen Android-Ansicht
- 14. Entfernen der Grenze zwischen Ansicht und Suchleiste
- 15. Was ist der Unterschied zwischen `ioToST` und` unsafeIOToST` aus GHC.IO
- 16. Laravel: Unterschied zwischen Ansicht :: Aktie() und Ansicht :: Komponist()
- 17. Was ist der Unterschied zwischen einem Tabellenindex und einem Ansichtsindex?
- 18. Was ist der Unterschied zwischen einer Variablen deklarieren (wie neu) und dann initialisieren und direkt initialisieren?
- 19. Unterschied zwischen DROP USER und Löschen einer Zeile aus der Tabelle mysql.user
- 20. Was ist der Unterschied (falls vorhanden) zwischen Html.Partial (Ansicht, Modell) und Html.RenderPartial (Ansicht, Modell) in MVC2?
- 21. Unterschied zwischen Ansichten und Tabellen in der Leistung
- 22. Unterschied zwischen zwei Versionen in der dynamischen Ansicht von ClearCase
- 23. Was ist der Unterschied zwischen dem Aufruf von LayoutInflater direkt und nicht?
- 24. Was ist der Unterschied zwischen der JSP und der JSTL?
- 25. Android: Was ist der Unterschied zwischen View.inflate und getLayoutInflater().
- 26. Was ist der Unterschied zwischen ROUTINE_NAME und SPECIFIC_NAME?
- 27. Was ist der Unterschied zwischen einer Methode direkt und im Block von dispatch_async ausführen (dispatch_get_main_queue(),^{})
- 28. Der Unterschied zwischen GotFocus und GotKeyboardFocus
- 29. Der Unterschied zwischen Kopf und Schwanz Rekursion
- 30. Was ist der Unterschied zwischen `==` und `ist`?
Wenn Sie diesen Artikel genau lesen, werden Sie sehen, dass es sich um "materialisierte Ansichten" handelt, die wirklich ein anderes Tier sind, das wirklich eine spezielle Form von Tisch schafft. – dkretz