Estou com uma consulta que demorava 4 minutos para ser executada. Consegui reduzir esse tempo pra 2 minutos, mas ainda é muito tempo.
Andei pesquisando alguma coisa sobre otimização, e achei alguma coisa que diz pra colocar o parametro /*+ RULE */ no inicio da consulta. Procurei pra decobrir o que significa isso e qual e sua função na consulta, mas nao consegui descobrir.
Alguem pode me dizer qual é a função desse codigo: /*+ RULE */
Isso se chama hint. É utilizado pra melhorar a performace de comandos DML como Select, Update e Delete.
No seu caso, RULE significa Regra e o banco vai executar a consulta baseada em alguns fatores, como por exemplo, cláusula from (ordem das tabelas), índices utilizados, entre outros.
O banco Oracle permite utilizar vários hints de performance. Você pode especificar, por exemplo, um índice de um campo de uma tabela para a consulta executar e utilizar na marra esse índice.
Dependendo da sua versão de banco são aceitos variados tipos de hints.
Os bancos mais novos da Oracle executam as consultas por Custos, ou seja, se baseiam em estatísticas das tabelas. Essas estatísticas mantém, entre outros, quantidade de registros das tabelas, índices utilizados. Nesse caso, faz-se necessário manter as estatísticas atualizadas para não perder performance.
Um detalhe, para bancos Oracle novos isso nao é considerado uma boa pratica. O correto é ter as estatisticas do banco atualizadas e deixar que o mesmo defina qual o melhor plano de execucao pra consulta.
Um detalhe, para bancos Oracle novos isso nao é considerado uma boa pratica. O correto é ter as estatisticas do banco atualizadas e deixar que o mesmo defina qual o melhor plano de execucao pra consulta.
]['s[/quote]
É verdade, lá na época do Oracle 7 ele era meio burrinho, mas hoje com as estatísticas ele se vira muito bem.