Я создал представление с использованием объединенного CVAS:
CREATE
OR REPLACE VIEW SAMPLEVIEW AS
SELECT
PT.CREDITPARTYACCOUNT AS PT_CREDITPARTYACCOUNT,
PT.DEBITPARTYACCOUNT AS PT_DEBITPARTYACCOUNT,
...
...
FROM
accountingevent AE
LEFT OUTER JOIN paymenttransaction PT ON (
AE.PAYMENTTRANSACTIONKEY = PT.PAYMENTTRANSACTIONKEY
)
OR (
AE.PAYMENTINSTRUCTIONKEY = PT.INCOMINGINSTRUCTIONKEY
)
WHERE
...
UNION ALL
SELECT
PT.CREDITPARTYACCOUNT AS PT_CREDITPARTYACCOUNT,
PT.DEBITPARTYACCOUNT AS PT_DEBITPARTYACCOUNT,
...
...
FROM
accountingevent AE
LEFT OUTER JOIN paymenttransaction PT ON (
AE.PAYMENTTRANSACTIONKEY = PT.PAYMENTTRANSACTIONKEY
)
WHERE
...
ORDER BY 1;
Результат
DESC SAMPLEVIEW;
PT_CREDITPARTYACCOUNT VARCHAR2(1024 CHAR)
PT_DEBITPARTYACCOUNT VARCHAR2(1024 CHAR)
...
...
AND
DESC PAYMENTTRANSACTION;
CREDITPARTYACCOUNT VARCHAR2(256 CHAR)
DEBITPARTYACCOUNT VARCHAR2(256 CHAR)
...
Размеры данных, которые я получаю 4 раз размер таблицы размеров столбцов. Если мы удалим UNION ALL и go с одним CVAS, то размеры станут равными в таблице и представлении. Это представление и таблицы являются частью больших скриптов, поэтому в скриптах отключено что-то, что вызывает такое поведение. Это странное поведение видно только с типами данных char и varchar2 . Я также проверил результат следующего запроса:
select * from NLS_DATABASE_PARAMETERS where parameter='NLS_CHARACTERSET';
NLS_CHARACTERSET AL32UTF8
Пожалуйста, сообщите мне, что здесь может быть не так, что вызывает такое поведение.
Спасибо