2013-04-18 10 views
0

Pourquoi il est suggéré de sélectionner les données de View sur une table particulière plutôt que de sélectionner directement à partir d'une table.Performances SQL/Avantages des données selectin de la table et des mêmes données à partir de la même table

par ex. Je

select * from table1 --Not recommended 

create view test (

select * from table1 

) 


select * from view - Recommended. 

Est-il beccause de problème de verrouillage ou d'autre (à l'aide MSSQL 2008 R2)

+0

Un bon début est [Scénarios d'utilisation des vues] (http://msdn.microsoft.com/en-us/library/ms188250 (v = sql.105) .aspx). Pour développer la réponse de Vikdor, vous pouvez également restreindre l'accès aux lignes, par ex. Afficher uniquement les données de vente de plus de 6 mois. – HABO

Répondre

1

Les vues sont généralement recommandées pour

  • cacher la structure de la table sous-jacente-à-dire ont calculé les colonnes ou les transformées etc.,
  • gérer l'accès à un niveau granulaire, c.-à-d. autoriser l'accès à certaines colonnes seulement dans un tableau
+0

Merci Viktor, vous avez suggéré correctement du point de vue de la sécurité. Pouvez-vous suggérer quelque chose en ce qui concerne le verrouillage et la performance. – Nishad

+0

@NishadMankar, Les données retournées par les vues ne sont pas physiquement séparées de celles des tables sous-jacentes. Une vue est exécutée lorsqu'elle est appelée. Ainsi, les vues n'améliorent pas le verrouillage ou les performances en tant que telles. – Vikdor

1

Je n'ai jamais vu cette recommandation - une source serait bonne! Comme le dit Vikdor, il y a des raisons d'utiliser une vue - la sécurité, et d'abstraire la logique autour des données sous-jacentes; ils n'ont aucun impact sur la performance. En fait, votre exemple serait considéré comme un anti-pattern, car les vues ne reconnaissent pas automatiquement les modifications apportées à la table sous-jacente; Chaque fois que vous changez votre "table1", vous devez recréer la vue.

J'ai également vu des cas où l'optimiseur de requêtes était un peu confus en accédant à des vues, et les requêtes résultantes étaient plus lentes que d'interroger les tables de base. Ceci est très spécifique à la plateforme et à la version, mais avec des requêtes complexes, cela peut être un problème.

Les vues matérialisées peuvent présenter des avantages en termes de performances, en particulier lorsque la vue stocke des calculs complexes.

+0

D'accord sur vos pensées Neville .. – Nishad

Questions connexes