Fondamentalement, il existe essentiellement 2 types de vues dans MySQL.
-
Fusionner les vues
Ce type de vue ne fait que réécrire vos requêtes avec le SQL de la vue. C'est donc un raccourci pour écrire les requêtes vous-même. Cela n'offre aucun avantage réel en termes de performances, mais facilite l'écriture de requêtes complexes et facilite la maintenance (puisque si la définition de la vue change, vous n'avez pas besoin de modifier 100 requêtes par rapport à la vue, une seule définition).
-
Vues tentantes
Ce type de vue crée une table temporaire avec la requête du SQL de la vue. Il a tous les avantages de la vue de fusion, mais réduit également le temps de verrouillage sur les tables de la vue. Par conséquent sur des serveurs très chargés cela pourrait avoir un gain de performances assez important.
Il y a aussi le type de vue "Undefined" (par défaut), qui permet à MySQL de choisir ce qu'il pense être le meilleur type au moment de la requête...
Mais notez quelque chose d'important à noter, c'est que MySQL ne prend pas en charge les les vues matérialisées . Ce n'est donc pas comme Oracle où une vue complexe augmentera considérablement les performances des requêtes. Les requêtes des vues sont toujours exécutées dans MySQL.
En ce qui concerne l'efficacité, les vues dans MySQL n'augmentent ni ne diminuent l'efficacité. Ils sont là pour vous faciliter la vie lors de l'écriture et de la maintenance des requêtes. J'ai utilisé des vues sur des tables avec des centaines de millions de lignes, et elles ont très bien fonctionné...