En fait tu cree tes vues a l'avance en sachant que chaque vue est une table virtuelle = un select...
en faisant un simple
"create view foo select * from bar where (foo<>bar);"
ensuite quand l'appli tourne elle interroge les vues (tables virtuelles) et non les tables, se qui limite au maximum les calculs lourd et les imbrication de select.
Bref donc pour resumé oui prévois tes vues dès le depart (au moins les principales).
---------------------------
l'interet des vues depand de ton schema de DB mais en general c'est tres important si tu veux extraire souvant des resultats qui peuvent etre long a sortir par des "select"...