on 2011 Apr 29 1:06 PM
Is it possible to create a materialized view which uses a parameter during manual refresh? Something like
CREATE MATERIALIZED VIEW "DBA"."MyView" in system as
select * from X where X.date > PARAM
So that e.g. each week the materialized view can be refreshed to reflect the values of last week or so...
Request clarification before answering.
No, not at this time.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
If you maintain 'paramtable' with exactly one row representing the current parameter value, then your view can be declared immediate and also can be used for cost-based view matching by the SQL Anywhere Optimizer for queries which don't mention 'paramtable': to let the optimizer know that paramtable has exactly one row, add a primary key column. This is one solution. Other solutions exist as well.
Example:
create table paramtable (PK int not null primary key, A_PARAM int); insert into paramtable (PK,A_PARAM) values (1, NULL); update paramtable set A_PARAM=PARAM; -- This materialized view can be declared immediate -- and will be also used by the optimizer if the -- query references only the table 'X' CREATE MATERIALIZED VIEW "DBA"."MyView" in system as select * from X, paramtable where X.date > paramtable.A_PARAM and paramtable.PK = 1;
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The workaround I use is an extra table just with the value of the parameter and then in the materialized view:
select * from X where X.date > (select max(PARAM) from paramtable)
Not elegant but it works.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
73 | |
30 | |
9 | |
7 | |
7 | |
6 | |
6 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.