Index Awareness allows an universe to make use of Aggregated tables in the database.
These aggregated tables contains pre-calculated data. To use aggregation in the universe, we need to use the @aggregate_aware() function in the SELECT statement of the aggregate object.
Any query which includes @Aggregate_Aware() onthe aggregate objects directs the query to have data from aggregated tables instead of from non-aggregated tables.
It improves query performance and there by increases the execution speed of the query.
For example, lets say our database is having three dimension tables....i.e.Time (Year, quarter, Month, Date), Geography(i.e. Country, Region, State, City) and finally Products(Product id, product name, product category, quantity and Price).
Lets say there are 3 countries with 100 cities are there and 3 companies with 10 products are there.
At the lowest level of this datawarehouse it contains daily information about customers and products. It means a single row is there for daily each products purchases.
suppose if we want the year wise product sales details then it need to query number of records i.e.
i.e.365days X 100 Cities X 10 products = 365,000 rows
But actually in companies for yearly sales there are very less number of records are there.
i.e. 3 years X 3 countries X 3 companies = 27 rows
Therefore it minimizes the query time and there by improves the performance to a great extent.
It means it already consists of pre-calculated data instead of sum(adding) those records and then processing and finally returning.
1.For this we need to identify the objects on which we want to have aggregation.
2.Build the objects for the aggregation.
3.Include the @Aggregate_Aware() in the SELECT statement.
4.Identify the incompatible objects inthe tables.
Hope you people will got an idea.......if not please let me know.
|