2008-10-08 5 views
1

Dans certaines zones de mon application, j'ai besoin de données provenant de plusieurs tables de la base de données (j'ai une application, l'application a plusieurs attributs, chaque attribut a plusieurs définitions et chaque définition une valeur). J'ai besoin des données de tous ces tableaux pour une application. Devrais-je utiliser une vue (une qui serait plutôt grande) ou des sous-requêtes pour sélectionner les enregistrements? Dans le cas des sous-requêtes, l'optimiseur est-il capable de fonctionner efficacement? Je suis également intéressé si la mise en cache fonctionnera pour les sous-requêtes.Vues vs sous-requêtes inline SQL Server 2005/2008

Répondre

2

Les vues sont généralement développées en place dans les sous-requêtes, à moins que vous ne marquiez explicitement les vues comme persistées en y déposant un index cluster.

1

Ceci est une question 'Cela dépend'. Une vue peut aider à rendre le code plus facile à maintenir, mais des prédicats de sélection complexes peuvent perturber l'optimiseur.

Une autre option est une procédure stockée qui renvoie un jeu d'enregistrements. Si vous réutilisez une sous-requête plusieurs fois, vous pouvez obtenir un certain kilométrage en séparant la requête, en sélectionnant la sous-requête dans une table temporaire et en combinant les parties dans une étape ultérieure.

Sans une description plus précise du problème, il est difficile de donner une réponse significative.