Tenho uma view que extrai dados de arquivos XML guardados num campo de uma tabela. A view é relativamente rápida pelo volume de informações processadas. Porém, se for adicionada uma cláusula "order by" em algum campo do XML no SQL, a pesquisa demora tanto a ponto de ser inviável.
Exemplo demonstrativo do caso:
CREATE OR REPLACE VIEW VW_DEMO AS
SELECT TABELA.CODIGO
XTAB.CAMPO
FROM TABELA,
XMLTABLE ('//root/campo' PASSING TABELA.XML COLUMNS
CAMPO VARCHAR2 (50) PATH '/campo/text()') XTAB:
SELECT * FROM VW_DEMO; --executa em menos de 1 segundo
SELECT * FROM VW_DEMO ORDER BY CODIGO; --executa em menos de 1 segundo
SELECT * FROM VW_DEMO ORDER BY CAMPO; --leva vários minutos