Une requête sur une vue plus lent que l'exécution de SQL directement?
Scénario:
J'ai 3 tables qui ont besoin d'être réunis, une clause where pour limiter le jeu de résultats, et à seulement quelques colonnes de chaque table en cours de sélection. Simple. Toutefois, la requête pour ce faire n'est pas très jolie, et lors de l'utilisation d'un ORM entre la base de données et l'application, son comme essayer de placer une cheville carrée dans un trou rond.
Ma façon de contourner cela est de créer une vue qui embrasse la requête et maintenant, mon modèle d'application des cartes directement à une vue dans la base de données; pas plus fou de la cartographie de la couche ORM.
Question:
En supposant qu'aucun des autres facteurs entrent en jeu ici, sera la requête sur la vue d'engager une quelconque des performances supplémentaires sanctions que je n'aurais pas touché si j'ai exécuté l'instruction SQL directement? - Ce n'est pas une vue indexée, supposons que la même clause where, garder cela simple.
Je suis amené à croire qu'une vue souffre d'une charge supplémentaire de "construit". Ma compréhension est que, avec tout le reste la même, les deux devraient avoir des performances identiques.
Préciser. Merci!
OriginalL'auteur PAR | 2011-01-07
Vous devez vous connecter pour publier un commentaire.
À partir de MSDN:
Vue de la résolution
Il ne devrait pas être différent de la performance. Vues vous aide à organiser, pas d'amélioration de la performance. Sauf si vous utilisez les vues indexées.
OriginalL'auteur stian.net
Dans Oracle, la performance est la même. Une vue est vraiment un nommé instruction sql. Mais amateur.
Lorsque vous démarrez l'imbrication des vues, et de rejoindre les points de vue avec d'autres de table ou de vue, les choses se compliquent très vite. Si Oracle ne peut pas pousser vos filtres en bas de la vue de la table, il a souvent à se matérialiser (construire une table temp de) les parties de la requête, et ce est quand vous obtenez la mauvaise performance.
OriginalL'auteur Ronnis