Restrição da PARTITION no FROM e no WHERE. Qual a diferença?

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
mlobao
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 03 Abr 2009 6:18 pm
Localização: Salvador - BA

Pessoal,

Aqui no trabalho nós possuímos tabelas particionadas, devido ao grande volume de dados, e constantemente geramos relatórios utilizando estas tabelas. Recentemente tivemos muitos problemas de ORA-01555: snapshot too old a solução que encontramos foi explicitar o nome da partição no FROM, exemplo FROM TABELA PARTITION(NOMEDAPARTICAO). Antes realizávamos a extração fazendo a restrição no WHERE com o campo particionado, exemplo WHERE CAMPOPARTICIONADO = VALOR.

Além de resolvermos o problema de snapshot too old, também notamos um ganho significativo na execução das querys. Fica a pergunta..
alguém sabe qual a diferença conceitual entre essas duas formas ?

Utilizamos o Oracle 10g.

[]'s
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

MLobao,

Uma explicação bem simples é que a clásula FROM já filtra parte dos dados, pois você estará selecionando uma parte do conjunto de dados que serão retornados.

Assim, quando o Oracle vai nos blocos do sistema operacional buscar as informações para resolver o seu problema, além de ser necessário ler menos blocos, menos informação será armazenada na tablespace de UNDO.

O erro retornado ORA-01555: Snapshot too old retorna porque o Oracle precisa alocar dados na UNDO tablespace, mas não há segmentos disponíveis. Para resolver esse problema é necessário aumentar o tamanho dessa tablespace, o que deverá ser feito por um DBA.

Abraços,
Avatar do usuário
fbifabio
Moderador
Moderador
Mensagens: 199
Registrado em: Ter, 22 Fev 2011 1:51 pm
Localização: São Paulo - SP
Contato:

Aproveito a oportunidade para deixar o link de um artigo meu sobre tabelas particionadas:

http://www.fabioprado.net/2011/02/crian ... -para.html


[]s
Fábio Prado
http://www.fabioprado.net
Responder
  • Informação
  • Quem está online

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