OVH Cloud OVH Cloud

Quel est réellement l'intérêt d'une vue ?

3 réponses
Avatar
YTSE
j'ai bien compris l'intérêt des vues en tant que simplificationd e l'écriture
de requêtes, en tant que possibilité de "masquer" les relations entre les
tables pour l'utilisateur final de la vue, mais aussi pour la sécurité vis à
vis des requêtes action.

En revanche, je n'arrive pas à déterminer si les vues ont un réel intérêt en
termes d'optimisation.

Si je fais dans mon programme
"select a.lib, b.lib from a inner join b on a.pk = b.fk"
par rapport à
"create view v as select a.lib as lib_a, b.lib as lib_b from a inner join b
on a.pk = b.fk"
puis "select lib_a, lib_b from v"

Existe-t'il une différence d'interprétation au niveau du serveur ? La
requête est-elle optimisée d'une façon ou d'une autre, et si oui comment ??

Merci

3 réponses

Avatar
Fred BROUARD
YTSE a écrit:
j'ai bien compris l'intérêt des vues en tant que simplificationd e l'écriture
de requêtes, en tant que possibilité de "masquer" les relations entre les
tables pour l'utilisateur final de la vue, mais aussi pour la sécurité vis à
vis des requêtes action.

En revanche, je n'arrive pas à déterminer si les vues ont un réel intérêt en
termes d'optimisation.



L'optimisation n'est pas un concept SQL. C'est un problème physique auquel SQL
est totalement étranger.


Si je fais dans mon programme
"select a.lib, b.lib from a inner join b on a.pk = b.fk"
par rapport à
"create view v as select a.lib as lib_a, b.lib as lib_b from a inner join b
on a.pk = b.fk"
puis "select lib_a, lib_b from v"

Existe-t'il une différence d'interprétation au niveau du serveur ? La
requête est-elle optimisée d'une façon ou d'une autre, et si oui comment ??



De manière très générale l'imbrication de vue rend l'optimisation moindre. En
revanche entre une vue et la requête directe, aucune différence d'optimisation.

A +


Merci



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
YTSE
OKIDOKI c'est donc ce que je pensais, merci pur la rapidité de votre réponse.


"Fred BROUARD" a écrit :



YTSE a écrit:
> j'ai bien compris l'intérêt des vues en tant que simplificationd e l'écriture
> de requêtes, en tant que possibilité de "masquer" les relations entre les
> tables pour l'utilisateur final de la vue, mais aussi pour la sécurité vis à
> vis des requêtes action.
>
> En revanche, je n'arrive pas à déterminer si les vues ont un réel intérêt en
> termes d'optimisation.

L'optimisation n'est pas un concept SQL. C'est un problème physique auquel SQL
est totalement étranger.

>
> Si je fais dans mon programme
> "select a.lib, b.lib from a inner join b on a.pk = b.fk"
> par rapport à
> "create view v as select a.lib as lib_a, b.lib as lib_b from a inner join b
> on a.pk = b.fk"
> puis "select lib_a, lib_b from v"
>
> Existe-t'il une différence d'interprétation au niveau du serveur ? La
> requête est-elle optimisée d'une façon ou d'une autre, et si oui comment ??

De manière très générale l'imbrication de vue rend l'optimisation moindre. En
revanche entre une vue et la requête directe, aucune différence d'optimisation.

A +

>
> Merci

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************




Avatar
Patrice
Un cas particulier concerne les vues "indexées" nouvelles en 2000. Dans ce
cas la vue est "matérialisée" (les lignes sont recopiées) ce qui doit donc
améliorer la lecture et pénaliser les mises à jour...

Cf la doc en ligne pour les détails dont je ne me souviens pas...

--
Patrice

"YTSE" a écrit dans le message de
news:
j'ai bien compris l'intérêt des vues en tant que simplificationd e


l'écriture
de requêtes, en tant que possibilité de "masquer" les relations entre les
tables pour l'utilisateur final de la vue, mais aussi pour la sécurité vis


à
vis des requêtes action.

En revanche, je n'arrive pas à déterminer si les vues ont un réel intérêt


en
termes d'optimisation.

Si je fais dans mon programme
"select a.lib, b.lib from a inner join b on a.pk = b.fk"
par rapport à
"create view v as select a.lib as lib_a, b.lib as lib_b from a inner join


b
on a.pk = b.fk"
puis "select lib_a, lib_b from v"

Existe-t'il une différence d'interprétation au niveau du serveur ? La
requête est-elle optimisée d'une façon ou d'une autre, et si oui comment


??

Merci