Question

Je génère rarement (mensuellement ou trimestriellement) des centaines de rapports Crystal Reports à l'aide des vues de la base de données Microsoft SQL Server 2005.Ces vues gaspillent-elles des cycles de processeur et de RAM pendant tout le temps où je ne les lis pas ?Dois-je plutôt utiliser des procédures stockées, des tables temporaires ou des tables normales de courte durée, car je lis rarement mes vues ?

Je ne suis pas un administrateur de base de données, donc je ne sais pas ce qui se passe dans les coulisses du serveur de base de données.

Est-il possible d’avoir trop de vues de base de données ?Qu'est-ce qui est considéré comme une bonne pratique ?

Était-ce utile?

La solution

Pour la plupart, cela n'a pas d'importance.Oui, SQL Server aura plus de choix lorsqu'il analysera la table SELECT * FROM (il devra rechercher 'table' dans les catalogues système), mais il est hautement optimisé pour cela, et à condition que vous disposiez de suffisamment de RAM (la plupart des serveurs le font de nos jours) , vous ne remarquerez pas de différence entre 0 et 1 000 vues.

Cependant, du point de vue des personnes, essayer de gérer et de comprendre ce que font des « centaines » de vues est probablement impossible, vous avez donc probablement beaucoup de code dupliqué.Que se passe-t-il si certaines règles métier intégrées dans ces vues redondantes changent ?

Le point de vue principal est d'encapsuler la logique métier dans une pseudo-table (vous pouvez donc avoir une table de personnes, mais ensuite une vue appelée "active_persons" qui fait de la magie).Créer une vue pour chaque rapport est un peu idiot, à moins que chaque rapport ne soit si isolé et unique qu'il n'est pas possible de le réutiliser.

Autres conseils

Une vue est une requête que vous exécutez souvent avec des paramètres prédéfinis.Si vous savez que vous consulterez tout le temps les mêmes données, vous pouvez créer une vue pour faciliter l'utilisation et la liaison des données.

Cela étant dit, lorsque vous sélectionnez dans une vue, la requête de définition de vue est exécutée avec la requête que vous exécutez.

Par exemple, si vwCustomersWhoHavePaid est :

Select * from customers where paid = 1

et la requête que vous exécutez renvoie les clients qui ont payé après le premier août et est formatée comme ceci :

Select * from vwCustomersWhoHavePaid where datepaid > '08/01/08'

La requête que vous exécutez actuellement est :

Select * from (Select * from customers where paid = 1) where datepaid > '08/01/08'

C'est quelque chose que vous devez garder à l'esprit lors de la création de vues, c'est un moyen de stocker des données que vous consultez souvent.C'est simplement une façon d'organiser les données pour qu'elles soient plus faciles d'accès.

Les vues ne consommeront des ressources CPU/mémoire que lorsqu'elles seront appelées.

Quoi qu'il en soit, la meilleure pratique consisterait à consolider ce qui peut être consolidé, à supprimer ce qui peut être supprimé et, s'il n'est littéralement utilisé que par vos rapports, à choisir une norme de dénomination cohérente pour les vues afin qu'elles puissent facilement être regroupées lors de la recherche d'une vue particulière. .

De plus, à moins que vous n'ayez vraiment besoin d'une isolation transactionnelle, envisagez d'utiliser l'indicateur de table NOLOCK dans vos requêtes.

-Kevin Fairchild

Tu demandes:Que se passe-t-il dans les coulisses ?

Une vue est un ensemble de texte SQL.Lorsqu'une requête utilise une vue, SQL Server place ce texte SQL dans la requête.Cela se produit AVANT l’optimisation.Le résultat est que l'optimiseur peut considérer le code combiné au lieu de deux morceaux de code distincts pour le meilleur plan d'exécution.

Vous devriez regarder les plans d’exécution de vos requêtes !Il y a tellement de choses à apprendre là-bas.

SQL Server a également un concept de vue groupée.UN vue groupée est un jeu de résultats géré par le système (chaque insertion/mise à jour/suppression sur les tables sous-jacentes peut entraîner une insertion/mise à jour/suppression sur la vue groupéeles données).C'est une erreur courante de penser que les opinions fonctionnent de la manière vues groupées fonctionner.

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