In SQL Server, wann soll ich eine indizierte Sicht statt einer realen Tabelle verwenden?

StackOverflow https://stackoverflow.com/questions/3861476

  •  27-09-2019
  •  | 
  •  

Frage

Ich weiß, in SQL Server Sie Indizes für eine Ansicht erstellen, dann speichert die Ansicht, die die Daten aus der zugrunde liegenden Tabelle. Dann können Sie die Ansicht abfragen. Aber warum muss ich Ansicht verwenden, anstatt Tabelle?

War es hilfreich?

Lösung

können Sie möchten eine Ansicht verwenden, um auf Anfragen zu vereinfachen. In unseren Projekten ist der Konsens Ansichten für Schnittstellen verwenden, und vor allem „Bericht Schnittstellen“.

Stellen Sie sich eine Client-Tabelle haben, und der Manager will einen Bericht jeden Morgen mit dem Namen des Kunden sowie ihren Kontostand (oder was auch immer). Wenn Sie Ihren Bericht für die Tabelle kodieren, sind Sie eine starke Verbindung zwischen Ihrem Bericht und Ihre Tabelle erstellt, so dass spätere Änderungen schwierig.

Auf der anderen Seite, wenn Ihr Bericht einen Blick trifft, können Sie die Datenbank frei drehen; solange die Sicht gleich ist der Bericht funktioniert, ist der Manager glücklich und Sie sind frei, mit der Datenbank zu experimentieren. Sie wollen Client-Metadaten aus dem Haupt Client-Tabelle trennen? gehen für sie, und verbinden Sie die beiden Tabellen in der Ansicht. Sie wollen den Warenkorb info für den Kunden denormalize? kein Problem, kann die Ansicht anpassen ...

Um ehrlich zu sein, es ist meine Meinung nach als Programmierer, sondern auch andere Anwendungen werden sicherlich von db-Gurus zu finden:)

Andere Tipps

Eine Tabelle ist, wo die Daten physisch gespeichert ist.

Eine Ansicht ist, wo Tabellen zusammengefasst werden oder gruppieren Gruppen von Tabellen einfacher zu bedienen zu machen.

Eine indizierte Sicht erlaubt eine Abfrage eine Ansicht zu verwenden und benötigen keine Daten aus der zugrunde liegenden Tabelle zu erhalten, da der Blick bereits die Daten hat, wodurch sich die Leistung.

Sie können nicht das gleiche Ergebnis mit nur Tabellen erreichen, ohne die Datenbank zu Denormalisierung und damit möglicherweise andere Probleme zu schaffen.

Ein Vorteil einer indizierten Sicht besteht darin, für die Ergebnisse von zwei oder mehr Spalten der Bestellung, wobei die Spalten in verschiedenen Tabellen sind. dh sie haben eine Ansicht, die das Ergebnis von Tabelle 1 und Tabelle 2 von table1.column1 sortiert, table2.column2. Sie könnten dann einen Index für column1 erstellen, column2 zu optimieren, die Abfrage

Grundsätzlich verwenden eine Ansicht:

  1. Wenn Sie die gleiche komplexe Abfrage auf vielen Tabellen, mehrere Male.
  2. Wenn neue System Notwendigkeit, alte Tabellendaten zu lesen, aber siehe nicht ihr wahrgenommen Schema zu ändern.

indizierte Views kann die Leistung verbessern, indem die spezifischen Index erstellen, ohne Redundanz zu erhöhen.

Eine Ansicht ist einfach eine SELECT-Anweisung, die einen Namen und in einer Datenbank gespeichert gegeben wurde. Der Hauptvorteil einer Ansicht ist, dass, sobald es erstellt wird, wirkt es wie eine Tabelle für alle anderen SELECT-Anweisungen, die Sie schreiben wollen.

Die Select-Anweisung für die Ansicht Tabellen verweisen kann, andere Ansichten und Funktionen.

Sie können einen Index für die Sicht (indizierte Sicht) schaffen die Leistung zu verbessern. Eine indizierte Sicht ist selbst aktualisierende, unmittelbar Änderungen an den zugrunde liegenden Tabellen widerspiegelt.

Wenn Sie Ihre indizierten Sicht nur Spalten aus einer Tabelle auswählt, könnten Sie einfach platzieren und den Index für die Tabelle und Abfrage der Tabelle der Ansicht direkt, nur Aufwand verursachen würde für Ihre Datenbank. Allerdings, wenn Ihre SELECT-Anweisung Abdeckungen mehr Tabellen mit Verknüpfungen usw. als Sie, indem Sie einen Index für die Ansicht, die einen Performance-Schub gewinnen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top