2010-07-12 5 views
2

J'ai récemment créé une paire de fonctions UDF en ligne, puis les ai référencées dans plusieurs vues en utilisant Cross Apply dans un cas et Outer Apply dans un autre cas. Après l'avoir fait fonctionner et testé, je pensais que c'était une utilisation plutôt sympa des UDF et de Cross/Outer Apply. Mais ensuite, il m'est apparu que j'aurais probablement pu faire la même chose en utilisant une vue.UDF de table en ligne vs une vue - Lequel utiliser?

Donc, ma question est la suivante. Pour ceux d'entre vous qui ont fait ce genre de chose, comment décidez-vous d'utiliser un UDF ITV vs un View? Je réalise bien sûr que l'UDF peut prendre des paramètres alors qu'une vue ne le peut pas, mais ces valeurs de paramètre UDF pourraient être utilisées dans une clause Where lors d'une requête sur la vue.

Merci.

+0

Quelques bonnes informations connexes http://stackoverflow.com/questions/1526904/sql-server-inline-table-value-udf-vs-inline-view –

Répondre

1

Personnellement, cela dépend du cas d'utilisation. J'évite généralement les points de vue car j'ai eu de mauvaises expériences avec eux dans ma base de données - les jeunes. J'aime aussi le UDF en raison de la possibilité de faire une certaine désinfection des paramètres à l'intérieur de l'UDF. Je ne peux pas le faire aussi facilement (ou garantir que cela arrive à chaque fois) en utilisant une vue.

Voici mon matériel de référence sur le sujet: Scary DBA

Exécutez le code exemple - vous pouvez modifier la taille du jeu de données facilement pour correspondre à votre ensemble de données - et vous pouvez voir ce qu'il parle.

Questions connexes