Question

J'ai un scénario dans lequel je combine deux tables en un seul (en utilisant UNION) et également associez des données à partir d'autres tables.

Je peux le faire soit avec une vue ou une fonction définie par l'UDF / utilisateur.

Étant donné que je ne vue jusqu'à présent du tout dans ma base de données, mais un certain nombre UDF pour rechercher du texte et comme, je suis tenté d'utiliser une UDF pour ce scénario et de le garder « propre ».

Cependant, cela est tout à fait subjective et je me demandais s'il y a une raison plus objective d'aller soit une vue ou une UDF dans ce scénario.

Je ne compare les plans de requête pour les deux et ils sont exactement les mêmes, donc je ne crois pas qu'il y ait une pénalité de performance ou un avantage pour l'utilisation de l'un ou l'autre.

Y at-il autre raison de choisir l'un sur l'autre ou le fait pas d'importance?

Était-ce utile?

La solution

Je toujours utiliser les fonctions dans l'ordre de sophistication. Un point de vue est relativement simple en termes de profil de performance et de gestion de la sécurité. Je serais probablement utiliser d'abord.

Je suppose que vous parlez d'une UDF table inline, qui ont à peu près les mêmes caractéristiques de performance. Sécurité sur une UDF est un peu différent et vous ne pouvez pas avoir la place des déclencheurs pour être en mesure de le faire « inserts » sur la vue. Un avantage de l'UDF serait que vous pouvez forcer les paramètres à fournir, assurant ainsi des modèles d'utilisation sont comme prévu, alors qu'une vue peut être interrogé sans aucun critère (peut-être par hasard).

Si vous ne finissez par vouloir une UDF pour le paramétrage, vous pouvez la couche sur le dessus de la vue (donc pas la duplication de code) et vous devriez constater que les performances ne sont pas affectées de manière significative, car l'optimiseur peut combiner des vues et en ligne TVF assez avec succès.

Autres conseils

Un avantage que je vois en utilisant ce scénario vue est de les indexer et de les utiliser comme des « vues indexées » où contrairement à une vision traditionnelle il y a fichier physique qui est créé et donc l'interrogation est plus rapide où il y a beaucoup de lignes dans il. L'effet même de l'utilisation est de contourner les jointures et les syndicats pour toutes les lignes au lieu de les construire que pour les nouvelles lignes.

Comme notre ami Cade a suggéré, vous Cud utiliser une vue à l'intérieur d'une UDF pour le garder propre et il n'est pas un autre lot.

Hope this helps!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top