Lors de l'utilisation de la base de données de points de vue et lorsqu'il n'est pas?
Cette question est à propos des vues de base de données, pas matérialisé-vues.
Pour:
- Requête de simplification.
- Éviter de répéter les mêmes jointures sur des multiples requêtes.
- Éviter des numéros de magie.
Contre:
- Cacher réel des requêtes (peut-être êtes-vous répéter joint).
Quoi d'autre?
- [ici][1] est une autre réponse, je pense qu'il sera utile [1]: stackoverflow.com/questions/1278521/...
Vous devez vous connecter pour publier un commentaire.
Pour:
Vous permet de modifier les structures de données sous-jacente, sans affecter les requêtes des applications l'utilisent (tant que votre vue peut masquer les structures de données)
De sécurité. Accorder l'accès sur une vue pour les utilisateurs qui doivent être en mesure de voir les colonnes renvoyées par elle.
Points de vue sont assez impressionnant quand vous n'avez pas entièrement confiance à la partie de l'envoi de requêtes sur votre base de données. Un bon exemple peut être vous créez une vue sur les tables pour un entrepreneur, de sorte que tout ce qu'ils peuvent voir, c'est les lignes relatives à leur projet.
Bien que les opinions peuvent masquer la complexité et plusieurs jointures, c'est la complexité qui aurait été dans le SP de toute façon.
Si le PS aurait pu être optimisé, alors la vue doit être optimisée, ce qui conduirait à une augmentation des performances sur tous les SPs qui a frappé ce point de vue.
Vues sont incroyablement puissant et utile, pour une raison qui se distingue au-dessus de tous les autres très bonnes raisons. Ils réduire la duplication de code. C'est, dans la plupart des cas, la ligne de fond. Si une requête est utilisé dans trois endroits ou plus, une vue va considérablement simplifier vos modifications si le schéma ou les paramètres de requête de changement.
Une fois, j'ai dû modifier 22 procédures stockées pour modifier certaines requêtes. Si l'architecture d'origine a utilisé des points de vue, alors je ne l'ai eu que trois changements.
Maintenant que SQL Server a les expressions de table communes je me retrouve à la création de moins point de vue. Quand je fais créer une vue, c'est généralement pour un normalisée de la hiérarchie qui peut être utilisé dans de nombreuses requêtes pas quelque chose qui remplace une requête.
Par exemple de la Région, de Marché, et la Ville est peut-être trois tables normalisées (flocon de neige). 90% de mes requêtes ont besoin de ces données, donc je vais créer une vue. La vue ne remplace jamais une seule requête, mais rend tous les autres requêtes simples et SÈCHE.
J'ai eu à utiliser des vues un peu de temps pour faire étrange de jointures et de regroupement par des alias.
Par d'étranges rejoint, je veux dire la sélection d'une liste de différentes dates et externe de se joindre de nouveau à la table, ils sont venus pour obtenir les entrées null pour les jours vides. Je ne pouvais pas trouver une autre façon de faire.
Comme pour le regroupement par alias, semblait-il, dépend de la complexité de la formule à l'intérieur de l'alias. Si l'alias n'ai pas de référence de toutes les colonnes réelles, ou les colonnes qui étaient déjà regroupés, tout était ok, mais des alias sur des colonnes qui n'étaient pas inclus dans le groupement lançaient des erreurs.
Je me souviens de la lecture ou de l'audience, quelque part au cours de mes études que la sélection d'un point de vue a été plus rapide que la sélection à partir d'un tas de tables jointes, mais je ne sais pas si c'est vrai.
Un dernier avantage de l'utilisation d'un point de vue: les tableaux croisés dynamiques dans Excel. Je ne pense pas qu'il y est un moyen de joindre les tables, ou au moins pas dans l'interface de l'assistant. Il pourrait être possible de faire des jointures dans Microsoft Query, mais je n'ai pas encore essayé parce que la pensée vient de se passer pour moi maintenant.
J'ai utilisé pour les utiliser tout le temps, maintenant rarement. Cependant, je fais toutes mes données d'accès thru procédures stockées afin de l'utilité d'un point de vue est un peu moins depuis la SP peut masquer la complexité de la joindre en cas de besoin.
Je serais encore envisager l'utilisation d'un point de vue si un, a été particulièrement compliqué rejoint de nombreux tableaux, à partir de laquelle je devais ensuite de construire de nombreux SP est sur, mais pour être honnête, je ne peux pas penser à tout ce que j'ai dans la production dès maintenant.
L'autre scénario, je voudrais utiliser un serait où mes utilisateurs ont accès à la base de données pour la génération de leurs propres rapports, et je voulais cacher la complexité sous-jacente pour eux.