Fala André,

Só complementando o que o pessoal disse, o otimizador do Oracle possui uma
feature chamada View Merging, que serve exatamente para esse fim, como
explicado na documentação de performance:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/optimops.htm#i55044

Se você perceber que o otimizador está gerando um plano de execução
inadequado por não estar filtrando o resultado da view, verifique se essa
feature está ativada.

Se quiser testar na marra, dê uma olhada na hint *MERGE*:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements006.htm#SQLRF50706

Abraços.

Atenciosamente,
Gleyson Melo


2010/1/12 Andre Santos <andre.psantos...@gmail.com>

> Xará
>
> Sobre o que você perguntou se o Oracle é "esperto": sim!
> O otimizador, normalmente, é capaz de perceber que não precisa trazer
> 1.000.000 de linhas primeiro... já fazendo também o filtro mais restritivo
> no mesmo processamento.
>
> [ ]
>
> André Santos
>
>
> 2010/1/12 José Laurindo <jlchia...@yahoo.com.br>
>
> >
> >
> > É bem simples : a view comum (ie, CREATE VIEW nomedela AS query; ) nada
> > mais é do que o TEXTO DE UMA CONSULTA, que é armazenado no banco, assim a
> > cada vez que vc fazer uma consulta na view, logicamente o texto vai ser
> lido
> > e executado de novo,o plano vai ser refeito, etc, NÃO HÁ dados numa view
> > comum... Caso vc queira uma view que depois do SQL executado seja feita
> uma
> > 'cópia' local dos dados, aí nos próximos acessos o plano não precisa ser
> > re-executado (a 'cópia' local dos dados é lida), no bd Oracle isso se
> chama
> > MATERIALIZED VIEW, vc a cria com CREATE MATERIALIZED VIEW nnn , e
> > (logicamente) há Diversas opções pra se especificar quando/como é feito o
> > refresh dos dados dessa 'cópia' local....
> > Dá uma lida no manual 'SQL Reference' nos capítulos de CREATE VIEW e
> CREATE
> > MATERIALIZED VIEW que vc acha refs, sintaxe e links pra exemplos do que
> foi
> > falado.
> >
> > []s
> >
> > Chiappa
> > --- Em oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>,
> > "andreaugustocm" <andreaugust...@...> escreveu
> >
> > >
> > > Bom dia Galera!
> > >
> > > Primeiro gostaria de desejar um ótimo ano a todos!!
> > >
> > > Vou mandar uma questão bem simples aos DBA's de plantão, caso puderam
> > ajudar...
> > >
> > > Como fica o plano de execução de uma VIEW, considerando a situação que
> > fiz um select na VIEW que deverá trazer em torno de 100 linhas, sendo que
> o
> > total de linhas retornadas pela View quando efetuo um SELECT * FROM .....
> > gira em torno de um milhão de linhas? A View seleciona um milhão de
> linhas e
> > depois aplica meu filtro para retornar as 100 linhas, ou o oracle é
> esperto
> > e somente pesquisa as 100 linhas na view?
> > >
> > > Grande Abraço,
> > > André
> > >
> >
> >
> >
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
>
> --------------------------------------------------------------------------------------------------------------------------
> >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> inteira responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>
> --------------------------------------------------------------------------------------------------------------------------
> >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
> » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
> http://www.oraclebr.com.br/
> ------------------------------------------------------------------------------------------------------------------------
> Links do Yahoo! Grupos
>
>
>


[As partes desta mensagem que não continham texto foram removidas]

Responder a