Frage

Ich habe ein Szenario, in dem ich kombiniere zwei Tabellen in einen (mit UNION) und JOIN auch Daten von einigen anderen Tabellen.

Ich kann dies entweder mit einer Sicht oder UDF / Benutzerdefinierte Funktion.

In Anbetracht, dass ich keine Aussicht so weit überhaupt in meiner Datenbank, aber schon einige UDF für die Volltextsuche und dergleichen, ich bin auch zu halten, eine benutzerdefinierte Funktion für dieses Szenario zu verwenden versucht, „clean“.

Dies ist jedoch völlig subjektiv und ich fragte mich, ob es ein besseren objektiver Grund zu gehen entweder einen Blick oder ein UDF in diesem Szenario.

Ich habe Abfragepläne für beide vergleichen und sie sind genau das gleiche, so glaube ich nicht, dass es eine Leistungseinbuße oder Vorteil ist entweder eine für die Anwendung.

Gibt es anderen Grund einen über die andere zu wählen, oder ist es egal?

War es hilfreich?

Lösung

Ich würde immer Funktionen, um die Komplexität nutzen. Eine Ansicht ist relativ einfach in Bezug auf die Leistungsprofil und Sicherheitsmanagement. Ich würde es wahrscheinlich zuerst verwenden.

Ich nehme an, Sie sprechen von einem Inline-Tabellenwert UDF, die so ziemlich identisch Leistungseigenschaften haben. Sicherheit auf einem UDF ist ein wenig anders und man kann nicht anstelle von Triggern in der Lage sein „Einsätze“ auf der Ansicht zu tun. Ein Vorteil der UDF wäre, dass Sie Parameter geliefert werden zwingen können, wodurch Nutzungsmuster gewährleistet werden, wie erwartet, während eine Ansicht ohne Kriterien abgefragt werden kann (vielleicht versehentlich).

Wenn Sie haben wollen, am Ende eine UDF zur Parametrierung haben, können Sie es auf dem View-Schicht könnte (also keine Code-Duplizierung) und Sie sollten feststellen, dass die Leistung nicht wesentlich beeinträchtigt wird, da der Optimierer Ansichten kombinieren und Inline-TVF ziemlich erfolgreich.

Andere Tipps

Ein Vorteil i unter Verwendung dieses Szenarios als Ansicht zu sehen ist, sie zu indizieren und sie als „indizierte Sichten“, wo im Gegensatz zu einer traditionellen Sicht gibt physische Datei, die erstellt wird, und daher die Abfrage ist schneller, wo es beträchtliche Menge an Zeilen in es. Die sehr Wirkung dieses zu verwenden, ist in den Bypass-Joins und Gewerkschaften für alle Zeilen statt sie nur für neue Zeilen bauen.

Als unser Freund Cade vorgeschlagen, CUD Sie eine Ansicht in einem UDF verwenden, um es sauber zu halten, und es ist nicht viel anders aus.

Hope, das hilft!

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