Aprenda PL/SQL

Performance do Order By

Tuning de Banco, Tuning de SQL, Ferramentas de tuning
  

Mensagemem Ter, 17 Set 2013 11:44 am

Bom dia,

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:

Código: Selecionar todos
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


Como melhorar essa situação?
Marciel
Localização: Vitória - ES

Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Mensagemem Ter, 17 Set 2013 11:36 pm

Marciel,

A ordenação consome muitos recursos do BD e a melhor recomendação para otimizar o SQL é evitá-la. Nunca pesquisei para entender o porquê de demorar mais em XML, mais sei que isso é normal. Quando eu era desenvolvedor, eu nunca fazia ordenação nas minhas instruções SQL, visões etc. Eu retornava os dados para a aplicação do modo em que elas vinham do BD e fazia a ordenação diretamente na aplicação. Ordenar os dados na aplicação geralmente é mais rápido que ordenar no BD.

[]s
fbifabio
Localização: São Paulo - SP

Fábio Prado
www.fabioprado.net

Mensagemem Qua, 18 Set 2013 10:32 am

Pessoal,

É uma dúvida minha, específica para este caso:

E se, ao invés da view, você criar uma temp, populá-la com o valor essa view (criar uma procedure popula_temp, por exemplo) sem ordenação e, depois fazer um select na temp, ordenado?

Abraço,

Trevisolli
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP



Voltar para DBA Tuning

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante