Re: [oracle_br] Order by tabela temporaria com 4 MI registro. Como fazer ?
no sqlplus: set timing on set autot on para testar i plano sem executar a consulta: set autot traceonly explain 2009/4/3 Júlio César Corrêa > NAO. > Porque você ordenaria? > Tem que ter uma justificativa bem elaborada para tal. > > Após o seu loop percorrer e tal,e você colocar os seus registros em > memória,o que você faz com estes 4MI de registros? > > O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de registros em > memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace > temporária). > > Você tem um loop que faz o processamento linha a linha ok? > Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando > Bulk e tal ? > > Vai um link para você dar uma olhada e ver se pode usar algo parecido.Na > internet tem varios exemplos,site da oracle ou a galera do grupo pode ajudar > quando tiver sem um norte. > > http://mportes.blogspot.com/2007/03/bulk-collect_12.html > > Dependendo do que você faz,poderia usar > 2009/4/3 Mauricio Lobão > > Pessoal, >> >> To com um problema...to precisando otimizar a performance de uma >> rotina...existe uma query em cima de uma tabela temporaria que possui 4 >> milhoes de registros...a tabela é indexada por estes dois campos >> (DATARETIRADA, BNF_NR) que são utilizados na ordenação. >> >> Minha dúvida...é necessário realizar a ordenação na tabela já que possui >> este indice ? O insert nesta tabela é feito através de um loop que percorre >> as partições de uma tabela e insere nesta temporaria. >> >> Alguem tem outra solução para este problema ? >> >> Indice: >> CREATE INDEX ON X >> (DATARETIRADA, BNF_NR) >> NOLOGGING >> NOPARALLEL; >> >> Query: >> SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS >> DATARETIRADA, STATUS FROM X ORDER BY DATARETIRADA, BNF_NR >> >> Agradeço desde já. >> >> >> > > > > -- > Júlio César Corrêa > IS Technologist - Oracle DBA > http://jccorrea.blogspot.com > > To stay competitive in the tech industry, never stop > learning. Always be on the lookout for better ways of > doing things and new technologies. Our industry does > not reward people who let themselves stagnate > John Hall, Senior Vice President, Oracle University > > -- Júlio César Corrêa IS Technologist - Oracle DBA http://jccorrea.blogspot.com To stay competitive in the tech industry, never stop learning. Always be on the lookout for better ways of doing things and new technologies. Our industry does not reward people who let themselves stagnate John Hall, Senior Vice President, Oracle University [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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Order by tabela temporaria com 4 MI registro. Como fazer ?
NAO. Porque você ordenaria? Tem que ter uma justificativa bem elaborada para tal. Após o seu loop percorrer e tal,e você colocar os seus registros em memória,o que você faz com estes 4MI de registros? O Oracle simplesmente vai tentar ordenar todas os 4 MILHOES de registros em memória ,caso não consiga,vai fazer isso em disco(segmento da tablespace temporária). Você tem um loop que faz o processamento linha a linha ok? Não há possibilidade de colocá-lo em lotes ou blocos e inseri-los?Usando Bulk e tal ? Vai um link para você dar uma olhada e ver se pode usar algo parecido.Na internet tem varios exemplos,site da oracle ou a galera do grupo pode ajudar quando tiver sem um norte. http://mportes.blogspot.com/2007/03/bulk-collect_12.html Dependendo do que você faz,poderia usar 2009/4/3 Mauricio Lobão > Pessoal, > > To com um problema...to precisando otimizar a performance de uma > rotina...existe uma query em cima de uma tabela temporaria que possui 4 > milhoes de registros...a tabela é indexada por estes dois campos > (DATARETIRADA, BNF_NR) que são utilizados na ordenação. > > Minha dúvida...é necessário realizar a ordenação na tabela já que possui > este indice ? O insert nesta tabela é feito através de um loop que percorre > as partições de uma tabela e insere nesta temporaria. > > Alguem tem outra solução para este problema ? > > Indice: > CREATE INDEX ON X > (DATARETIRADA, BNF_NR) > NOLOGGING > NOPARALLEL; > > Query: > SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS > DATARETIRADA, STATUS FROM X ORDER BY DATARETIRADA, BNF_NR > > Agradeço desde já. > > > -- Júlio César Corrêa IS Technologist - Oracle DBA http://jccorrea.blogspot.com To stay competitive in the tech industry, never stop learning. Always be on the lookout for better ways of doing things and new technologies. Our industry does not reward people who let themselves stagnate John Hall, Senior Vice President, Oracle University [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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Order by tabela temporaria com 4 MI registro. Como fazer ?
Mauricio, Você consegue nos enviar o plano de execução? Em relação a utilizar o índice ou não vai depender de algumas coisas, como você faz acesso a todos as linhas da tabela a utilização do índice pode não ser vantajosa, como são somente quatro colunas de repente fazendo uso de IOT algum ganho de performance pode existir mas precisariamos testar. Mande o plano de execução, as vezes não teremos muito como otimizar o SQL, existem hints como /*+ all_rows */ e se você tiver um tempo de FETCH alto nessa consulta você pode aumentar o array_size do sql*plus (caso você esteja visualizando esses dados nessa interface)... resumindo, mande o plano de execução e se possivel o trace dessa consulta... ai talvez fique mais facil de te ajudar. []'s Caio Spadafora. http://0011brothers.blogspot.com/ --- Em sex, 3/4/09, Mauricio Lobão escreveu: De: Mauricio Lobão Assunto: [oracle_br] Order by tabela temporaria com 4 MI registro. Como fazer ? Para: oracle_br@yahoogrupos.com.br Data: Sexta-feira, 3 de Abril de 2009, 17:53 Pessoal, To com um problema...to precisando otimizar a performance de uma rotinaexiste uma query em cima de uma tabela temporaria que possui 4 milhoes de registros... a tabela é indexada por estes dois campos (DATARETIRADA, BNF_NR) que são utilizados na ordenação. Minha dúvida...é necessário realizar a ordenação na tabela já que possui este indice ? O insert nesta tabela é feito através de um loop que percorre as partições de uma tabela e insere nesta temporaria. Alguem tem outra solução para este problema ? Indice: CREATE INDEX ON X (DATARETIRADA, BNF_NR) NOLOGGING NOPARALLEL; Query: SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRAD A,''MMDDHHMI SS'') AS DATARETIRADA, STATUS FROM X ORDER BY DATARETIRADA, BNF_NR Agradeço desde já. Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Order by tabela temporaria com 4 MI registro. Como fazer ?
Pessoal, To com um problema...to precisando otimizar a performance de uma rotina...existe uma query em cima de uma tabela temporaria que possui 4 milhoes de registros...a tabela é indexada por estes dois campos (DATARETIRADA, BNF_NR) que são utilizados na ordenação. Minha dúvida...é necessário realizar a ordenação na tabela já que possui este indice ? O insert nesta tabela é feito através de um loop que percorre as partições de uma tabela e insere nesta temporaria. Alguem tem outra solução para este problema ? Indice: CREATE INDEX ON X (DATARETIRADA, BNF_NR) NOLOGGING NOPARALLEL; Query: SELECT BNF_NR, PREMIO, TO_CHAR(DATARETIRADA,''MMDDHHMISS'') AS DATARETIRADA, STATUS FROM X ORDER BY DATARETIRADA, BNF_NR Agradeço desde já.