Views can simplify the amount of text you need to create a query, but layering each other is bad practice .
This encapsulation also jeopardizes poorly executed queries, because the views must be executed before they can join each other - all this logic inside may not match what you need for the final result, so being lazy can easily mean a query that doesn't performs as well as it should.
Since views are queries that are run only on invocation, you will not be aware of missing links until they are executed.
Remember that when using SELECT * in a view, the database captures the list of columns when the CREATE VIEW statement is executed - if the columns change, you need to update the view to get the changes.
There is also no performance difference between the presentation and the launch of the query on which the view is based. With the exception of materialized views (which MySQL does not support), views are just a prepared statement. If simple enough, the WHERE predicates can be transferred from the FROM view WHERE .... to the internal query, but this means the lack of function use and unreliability.
Conclusion
OK, but be careful.
source share