Я сталкиваюсь с таким странным поведением в нашей базе данных (Oracle 12c): существует запрос, который содержит несколько разделов по предложениям и подзапросам. После того, как мы преобразовали его в материализованное представление, мы получаем другие результаты, чем при отдельном выполнении запроса. Код, сгенерированный SQLDeveloper для создания объекта:
CREATE MATERIALIZED VIEW {MV_name}.{columns}
ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 163840 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE {our_tablespace} NO INMEMORY
BUILD IMMEDIATE
USING INDEX
REFRESH COMPLETE ON DEMAND START WITH sysdate+0 NEXT SYSDATE + 1
USING DEFAULT LOCAL ROLLBACK SEGMENT
USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
AS
{query}
Запрос:
select process_number, status, LASTCHANGEUSER, date_time,
rank() over (partition by cos.process_number order by cos.date_time desc) rank
from (
select process_number,
status,
grp,
LASTCHANGEUSER,
min(jn_datetime) over (partition by process_number, grp order by jn_datetime) as date_time,
rank() over (partition by process_number, grp order by jn_datetime) as aux_rank
from (select process_number,
jn_datetime,
status,
process_jn.LASTCHANGEUSER,
row_number() over (partition by process_number order by jn_datetime)
- row_number() over (partition by process_number, status order by jn_datetime) grp
from process_jn
)
) cos where aux_rank = 1;
Кто-нибудь знает, что там могло произойти, пожалуйста?