Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm new to Oracle databases. If I have understood correctly, materialized view is a view which result set is saved as a physical table in the database and this view/table is refreshed bases on some parameter. If view is saved as a physical table, why not store the data into a table in the first place? So what is the benefit of using materialized view instead of a table?

share|improve this question
up vote 43 down vote accepted

One of the biggest benefit of using a materialized view is that Oracle takes care of keeping the data in sync. If you have a separate aggregate table, you are responsible for keeping the data synchronized. That generally requires a reasonable amount of code and a decent amount of testing and most organizations manage to make mistakes that leave holes that cause the aggregate table to get out of sync. This is particularly true when you try to implement incremental refreshes of the aggregate table.

Another major benefit is that, depending on the settings, Oracle can use query rewrite to use materialized views when users issue queries against base tables. So, for example, if you have a bunch of existing reports against a detail table that produce daily, monthly, and yearly aggregate results, you can create a materialized view on the base table that aggregates the data at a daily level and the optimizer can utilize that materialized view for all your existing queries. This makes it much easier to optimize reporting workloads in a data warehouse without trying to go and rewrite dozens of reports to use your new aggregate table or to mess with DBMS_ADVANCED_REWRITE to force your own rewrites of the queries.

share|improve this answer

Materialized Views are automatically updated as their base tables are updated.

share|improve this answer

One good case for using MVs is that some times you want to aggregate data and get this summary information from large tables frequently and quickly. Without materialized views, you have to either deonormalize some of your tables and maintain the aggregates via code or repeatedly scan large sets of rows. Either way is not always acceptable specially with dashboard and similar online applications. If you keep the results in a separate tables, you complicate your application code and as @Justin Cave says, you will be in charge of making sure that the manually aggregated data is in synch. with the original table's data.

share|improve this answer

Not an Oracle person, but another use case would be third party solutions. They generally do not support you making changes to their designs but a MV would be "invisible" to their code but provide access to custom reporting/data extracts.

It's not free in that it will cost have storage costs and potentially impactful insert/update time costs but that may be offset by the time spent retrieving the materialized data versus a "straight view" or creating actual tables and maintaining the surrounding ETL.

Finally, doing so may void your support contract with the vendor, consult-your-lawyer-blah-blah-blah

share|improve this answer

Instead of going directly to Materialized views let me explain Views.

Basically views are exist logically unlike tables. If we want to hide certain columns to users we can not do using tables. Creating a view we can achieve the security.

Use-case: if a view is internally related with 10 tables along with group by and functions have millions of rows, it takes much time to execute.

So here comes Materialized views helps us to get data faster. Materialized views are physically exist in database. Whenever the base table is updated the Materialized view gets updated.

Materialized views are updated periodically based upon the query definition, table can not do this.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.