В Oracle 11g Я пытаюсь создать материализованное представление с FAST REFRESH ON COMMIT
, которое содержит предложение HAVING
.Материализованный просмотр быстрого обновления с предложением HAVING?
Database Data Warehousing Guide говорит:
General Restrictions on Fast Refresh
The defining query of the materialized view is restricted as follows:
- It cannot contain a HAVING clause with a subquery.
Но если добавить HAVING count(*)>1
(примечание: нет подзапросов) в противном случае рабочий материализованного представления, я получаю эту ошибку:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
dbms_mview.explain_mview()
говорит:
REFRESH_FAST N
REFRESH_FAST_AFTER_INSERT N 2011 a HAVING clause is present
Фактические команды:
SQL> create materialized view mv1 refresh fast on commit as
2 select UserId, count(*) from USERS group by UserId;
Materialized view created.
SQL> DROP MATERIALIZED VIEW mv1;
Materialized view dropped.
SQL> create materialized view mv1 refresh fast on commit as
2 select UserId, count(*) from USERS group by UserId
3 having count(*)>1; -- the only difference
having count(*)>1
*
ERROR at line 5:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
Примечание: Созданы материализованные журналы просмотра (в противном случае даже первый пример не будет работать).
Почему это не работает? Кто-нибудь знает пример MV с предложением HAVING? Так что, по крайней мере, я мог бы начать оттуда (я искал Google, но не нашел).
Note2: Причина, по которой я хочу HAVING
, состоит в том, чтобы уменьшить количество строк в представлении от тысяч или даже миллионов до нескольких. Чтобы сохранить память (и, возможно, повысить производительность).
PS: Exact версия базы данных Oracle используется: 11.2.0.3.0
@GordonLinoff - функциональность документально не связана с предложением HAVING ** с подзапросом **. Вопрос имеет смысл - OP * утверждает, что у него нет подзапросов в его определении MV. Независимо от того, делает он или нет, другой вопрос - он опубликовал что-то отличное от своего фактического определения MV, но вопрос имеет смысл. – mathguy
@mathguy Примеры в вопросе воспроизводят проблему, и у них нет подзапросов. Я удалю упоминание «другого» запроса, чтобы избежать путаницы. (хотя тогда кто-то скажет, что простой опубликованный пример не имеет смысла для бизнеса ...). –
Хорошо, тем временем Гордон отозвал свой вопрос/возражение на ваш пост, так что это спорный вопрос. Недавно я установил версию Enterprise на одном из моих компьютеров (я энтузиаст, который просто учился для себя) - ваш вопрос дает мотивацию, сегодня, попробуйте точно, что вы описали и подтвердите. Известно, что иногда даже документация ошибочна, просто помните об этом. – mathguy