Question

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, celle-ci possède de nombreux attributs, chaque attribut ayant plusieurs définitions et chaque définition ayant une valeur). J'ai besoin des données de toutes ces tables pour une application. Devrais-je utiliser une vue (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é par le fait que la mise en cache fonctionne pour les sous-requêtes.

Était-ce utile?

La solution

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

Autres conseils

Ceci est une question "Cela dépend". Une vue peut aider à rendre le code plus facile à gérer, mais des prédicats de sélection complexes risquent de confondre 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 gagner du temps en scindant la requête, en sélectionnant la sous-requête dans une table temporaire et en combinant les pièces ultérieurement.

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

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