Frage

Wir haben einen Anbieter geliefert Datenbank, dass ich zu diesem Zeitpunkt in der Lage gewesen, um alle Datenbankstruktur Änderungen zu verhindern, dass. Wir werden bald direkt die Tabellen direkt für ein verwandtes Projekt abfragt. Um alle Daten zu ziehen, die wir brauchen, müssen wir eine große SQL-Anweisung mit mehreren Gewerkschaften erstellen.

select ... from table1
union
select ... from table2
...
select ... from tableN

Die Geschwindigkeit ist die höchste Priorität für dieses Projekt. Wäre es schneller sein, eine Ansicht zu erstellen, die Joins zu tun, dann nur diese Ansicht abzufragen (und damit Änderungen an die Lieferantendatenbank zu machen) oder nur die Vereinigung Aussage unserer Anwendung ausführen?

weiß, dass ich das Potenzial in Änderungen an der Datenbank-Anbieter verbundenen Probleme so also, warum ich für Feedback suchen.

War es hilfreich?

Lösung

Wenn es um die Anbieter von Datenbanken kommt wäre ich sehr zögerlich Änderungen an den vorhandenen Tabellen zu machen. Hinzufügen von so etwas wie ein Blick scheint ein wenig sicherer, da Sie der einzige sind, die sie verwenden werden. Meine größte Sorge mit der Ansicht wäre, wenn Sie jemals ein Update von Ihrem Händler bekommen, dass Änderungen an der DB gemacht und man könnte die Ansicht verlieren.

Ich glaube nicht, dass Sie von der Nutzung der Ansicht keine Performance-Gewinne sehen würden, wenn Sie eine indizierte Sicht verwendet. Leider kann man nicht Indizes für eine Ansicht erstellen, die eine Vereinigung erstellt wird (zumindest in SQL Server).

Persönlich, wenn es darum geht, Logik in Anwendung zu bringen vs es in der DB I zuneigen DB setzen. Nach meiner Erfahrung sind diese Arten von Änderungen einfacher zu implementieren und zu warten.

Wenn ich in Ihrer Situation würde ich vor der Ansicht erstellen, wenn es um Ihr Leben leichter machen wird. Aber auch hier, nicht erwarten, Performance-Gewinne.

Andere Tipps

Nein eine Ansicht nicht schneller sein (mit Ausnahme der Entwicklungszeit).

Was schneller wäre ist UNION ALL zu verwenden, wenn es funktioniert. UNION sucht nach duplizierten Datensätze und entfernt sie aus dem Endergebnis. Wenn Sie die Datensätze nach Design kennen (wie jede Tabelle für eine differnt clinet ist oder jeder Tisch hat einen differnt Datumsbereich) kann nicht dupliziert werden, versuchen Sie UNION ALL nicht das Resultset zu DISTINCT und somit läuft viel schneller.

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