I've actually used materialized views in production on SQL Server, and they're great when they work, but they have far too many limitations. Most of these make sense, but some of the join limitations are internal constraints of the engine, not a fundamental limit. This prevents their use for a wide range of scenarios where they would be useful...