Aside from refresh performance one of the problems of using MV's, or summary tables in general, in an OLTP environment is that 3NF-and-higher schemas are prone to fan and chasm traps from storing metrics in multiple joined tables (eg. invoice_header and invoice_detail). To get the correct numbers from parent tables in a fan trap you have to divide the parent's metrics by the number of child rows, either in the summary itself or when querying it. This generally slows the process prohibitively or does not allow fast refresh (becuase you need analytic functions in the MV definition).
You'd have to be very careful about how you built your MV, and you'd just select metrics from a single table with no children, in other words. Rather like a star or snowflake.
In light of Jared's highly informative presention on why we should normalize for performance (Hotsos 2006) I was struck by this statement.
http://www.quest-pipelines.com/newsletter-v7/newsletter_0406.htm
Materialized views are an Oracle Silver Bullet when pre-joining tables together for super-fast response time.
One issue with highly-normalized, non-redundant Oracle table designs (e.g. third normal form) is that Oracle experiences a high degree of overhead (especially CPU consumption) when joining dozens of tables together, over-and-over again.
Using materialized views we pre-join the tables together, resulting in a single, fat, wide and highly-redundant table.
Not trying to start a flame war or anything here! While there are certainly "truisms" in the statement above, it does seem to me at first glance to be a statement that feeds into the "normalization hurts performance" mindset.
I have not read the entire article yet.
Thanks, Ethan
-- //www.freelists.org/webpage/oracle-l