A view is a permanent object, and the results can be indexed, and the CTE is temporary and only created when used so less flexibly. It will be more efficient to break your complex query into indexed views than to CTE. It will be most effective to ensure that all tables are properly indexed, which is likely to do more for performance than to worry about opinions against CTE.
mellamokb
source share