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]