Desempenho Acesso Diversas tabelas

Este forum é destinado a perguntas relacionadas a Oracle, mas que não se enquadram nos forums acima. Aqui serão tratadas também sobre outras tecnologias da oracle, como o Workflow, BPEL, Spatial, OCS, etc.
Responder
xico.ponte
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qua, 10 Jun 2009 5:38 pm
Localização: São carlos - SP

Fala pessoal

To com a seguinte dúvida...tenho um banco com diversas tabelas com caracteristicas iguais. Supondo que eu tenha um select igual e tenha que fazê-lo nas várias tabelas, seria mais viável (em questões de desempenho) ter uma tabela que guardasse a informação de todas com um campo de identificacao diferenciado as informacoes? E, tendo essa tabela, compensaria em caso de o select ser so para uma das tabelas anteriores?

obrigado!
erthal
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 130
Registrado em: Seg, 22 Nov 2004 1:45 pm
Localização: Niterói - RJ
Gustavo Erthal Jr. | TRISCAL
...................................................
Rio de Janeiro | (21) 2507-2010
São Paulo | (11) 3167-0526
www.triscal.com.br

Xico,

Se essa query que une várias tabelas for rodar mais de uma vez com filtros diferentes, você pode criar uma materialized view (MV) com os dados de todas as tabelas, mas sem aplicar filtros, que serão adicionados quando for feito um select sobre essa MV.

O problema de performance com muitas tabelas, é que quanto mais joins pior será o desempenho.

Você tem que considerar se vale a pena criar uma MV com os registros de todas as outras tabelas, e quando essa MV deverá sofrer um refresh, medindo, inclusive o tempo que esse refresh levará.

Faça alguns testes. Crie a MV medindo o tempo que o Oracle levará para criá-la e carregá-la. Depois faça uma query sobre essa MV, aplicando os filtros que são utilizados com frequência.

Depois rode a query que alimenta a MV, mas desta vez aplique filtros. Mas não repita os mesmos filtros da query feita sobre a MV para que o Oracle não utilize os dados na existentes nas áreas de memória. Se você utilizar os mesmos filtros o resultado será mascarado porque o Oracle não irá "buscar" os dados nos blocos do Sistema Operacional (SO), e sim o que já está nas áreas de memória.

Qualquer dúvida estou à disposição.

Abraços,
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes