Spätere Versionen von SQL (2005+) scheinen die Verwendung von Ansichten besser zu optimieren. Ansichten eignen sich am besten zur Konsolidierung von Geschäftsregeln. EG: Wo ich arbeite, haben wir eine Telekommunikationsproduktdatenbank. Jedes Produkt ist einem Tarifplan zugeordnet, und dieser Tarifplan kann ausgetauscht werden, und die Tarife im Tarifplan können aktiviert / deaktiviert werden, wenn die Tarife erhöht oder geändert werden.
Um dies zu vereinfachen, können wir verschachtelte Ansichten erstellen. Die erste Ansicht fügt die Tarifpläne einfach mit den benötigten Tabellen zu ihren Tarifen hinzu und gibt alle erforderlichen Daten zurück, die für die nächsten Ansichtsebenen erforderlich sind. 2. Ansicht (en) können nur aktive Tarifpläne und deren aktive Tarife isolieren. Oder nur Kundentarife. Oder Mitarbeiterpreise (für Mitarbeiterrabatt). Oder Preise für Geschäfts- oder Privatkunden. (Tarifpläne können kompliziert werden). Entscheidend ist, dass die Basisansicht sicherstellt, dass unsere gesamte Geschäftslogik für Tarifpläne und Tarife ordnungsgemäß an einem Ort zusammengeführt werden. In der nächsten Ansichtsebene konzentrieren wir uns mehr auf bestimmte Tarifpläne (Typen, Aktiv / Inaktiv usw.).
Ich bin damit einverstanden, dass das Debuggen von Ansichten problematisch werden kann, wenn Sie gleichzeitig Abfragen und Ansichten erstellen. Wenn Sie jedoch eine bewährte Ansicht verwenden, erleichtert dies das Debuggen. Sie wissen, dass die Anzeige bereits den Rufton durchlaufen hat, sodass Sie wissen, dass das Problem höchstwahrscheinlich nicht durch den Rufton verursacht wird.
Es können jedoch Probleme mit Ihren Ansichten auftreten. "Was ist, wenn ein Produkt nur einem inaktiven Tarif zugeordnet ist?" oder "Was ist, wenn ein Tarif nur inaktive Tarife enthält?" Nun, das kann auf der Front-End-Ebene mit Logik abgefangen werden, die Benutzerfehler abfängt. "Fehler, Produkt befindet sich in einem inaktiven Tarifplan ... bitte korrigieren". Wir können auch Abfrageprüfungen durchführen, um dies vor einem Abrechnungslauf zu überprüfen. (Alle Pläne auswählen und zur aktiven Tarifplanansicht wechseln, nur Tarife zurückgeben, die keinen aktiven Tarifplan erhalten, da Probleme behoben werden müssen).
Das Gute daran ist, dass Sie mit den Ansichten Abfragen für Berichte, Abrechnungen usw. erheblich reduzieren können. Sie können eine Kundenkontoansicht und dann eine Ansicht auf der zweiten Ebene nur aktiver Kunden erstellen. Team das mit Blick auf die Kundenadresse. Team das mit Blick auf Produkt (e) (beigetreten auf welches Produkt (e) der Kunde hat). Team das, um Produkt (e) Rateplan anzuzeigen. Team das mit Blick auf Produkteigenschaften. Anzeigen, Anzeigen, Anzeigen, jeder Versuch ist fehlerfrei, um die Integrität sicherzustellen. Ihre Endabfrage unter Verwendung der Ansichten ist sehr kompakt.
bearbeiten:
Als Beispiel dafür, dass die Ansicht besser gewesen wäre als nur eine flache Abfrage von Tabellen. Wir haben einen Zeitarbeiter hinzugezogen, um einige Änderungen vorzunehmen. Sie sagten ihm, es gäbe Ansichten für Dinge, aber er beschloss, alle seine Fragen zu verflachen. Bei der Abrechnung wurden einige seiner Fragen beantwortet. Sie bekamen immer wieder verschiedene Tarife und Tarife für Dinge. Es stellte sich heraus, dass bei seinen Abfragen Kriterien fehlten, die eine Abrechnung der Tarife nur dann zuließen, wenn sie zwischen dem Start- und Enddatum lagen, an dem der Tarifplan diese / jene Tarife verwenden sollte. Hoppla. Wenn er die Ansicht benutzt hätte, hätte sie diese Logik bereits berücksichtigt.
Grundsätzlich muss man Leistung gegen Vernunft abwägen. Vielleicht können Sie allerhand ausgefallene Dinge tun, um die Leistung einer Datenbank zu steigern. Aber wenn es bedeutet, dass es ein Albtraum für eine neue Person ist, die es übernimmt / unterhält, ist es das wirklich wert? Lohnt es sich wirklich, wenn der neue Typ Schlag auf Schlag spielen muss, um all die Fragen zu finden, die erforderlich sind, um seine Logik zu ändern (und das Risiko einzugehen, dass er sie vergisst / dickfingert)? Haben Sie nicht eine Kerngeschäftslogik zu einer konsolidiert, die in Hunderten von anderen Abfragen verwendet werden kann? Es liegt wirklich an Ihrem Unternehmen und Ihrem IT / IS / DB-Team. Aber ich würde Klarheit und Konsolidierung aus einer Hand der Leistung vorziehen.