DELETE FROM TAB1 A WHERE ROWID > (SELECT min(rowid) FROM TAB1 B WHERE A.COL1 = B.COL1 and A.COL2 = B.COL2 and A.COL3 = B.COL3 and ....);
Jean Carlos Antunes Consultor Oracle EBS +55 41 98744631 +55 19 32290828begin_of_the_skype_highlighting +55 19 32290828 end_of_the_skype_highlighting ________________________________ De: jlchiappa <jlchia...@yahoo.com.br> Para: oracle_br@yahoogrupos.com.br Enviadas: Quinta-feira, 4 de Outubro de 2012 9:20 Assunto: [oracle_br] Re: É possível remover registros duplicados sem usar o distinct? Bom, basicamente para um SELECT eliminar as linhas duplicadas (entendendo-se duplicação como linhas com todos os valores iguais) vc tem o DISTINCT, o UNION, o MINUS e o uso de algumas funções analíticas, cfrme https://forums.oracle.com/forums/thread.jspa?threadID=2334061 ilustra , é basicamente isso ... Outra possibilidade é, nos casos onde o resultado do SELECT sem nenhuma adição é que esteja trazendo duplicados, vc pedir para que apenas a primeira linha seja considerada, via rownum... Exemplo, imagine que eu tenho um SELECT * FROM X WHERE chave=10 que me retorna : chave descrição 10 descrição 10 10 descrição 10 nesse tipo de caso vc ao invés do DISTINCT pode especificar : SELECT * FROM X WHERE chave=10 AND rownum < 2; okdoc ? Mas nem preciso dizer que TODAS as técnicas de eliminação de duplicidade TEM SIM um custo em performance, um grau de overhead que dependendo dos volumes pode ser intoleravelmente alto - não tem outro jeito desse ambiente ser minimamente performático e SEGURO em relação à integridade de dados sem uma Normalização decente, faça vc o que fizer : haja ou não impacto, enquanto vc não fizer isso vc vai estar basicamente DESPERDIÇANDO recursos no seu servidor (storage, CPU, rede, etc) fazendo o coitado ler/armazenar/processar/enviar pela rede trocentas linhas inúteis, que é o que uma linha duplicada é , e vai estar com uma massa de dados TOTALMENTE não-íntegra e logicamente insegura.... []s Chiappa --- Em mailto:oracle_br%40yahoogrupos.com.br, Wanderson Barrence <wbarrence@...> escreveu > > Boa Milton!!! > > É no select mesmo!!! > > O banco aqui da empresa é totalmente desnormalizado, onde nem a 1FN é > respeitada, verifiquei que esse é o principal problema da performance no > banco, onde encontrei um monte de query's com DISTINCT em tabelas com mais > de 100 mil linhas.. kkk > > Sei que a solução ideal seria normalizar a base e retirar os distincts das > query's, todavia esse impacto seria grande para a aplicação, por motivo de > serem alterados alguns tipos de dados e criação de novas tabelas. > > Como sei que os distincts são necessários nesse caso, eu estou procurando > saber se existe algo parecido que não cause tanto impacto na performance do > sistema. > > Att, > > -- > Wanderson Barrence > DBA Oracle 10g/11g > Analista de Testes - CBTS > ---------------------------------------------------------- > MSN: wbarrence@... > ICQ: 170821994 > Linkedin: http://br.linkedin.com/in/wbarrence > > > > Em 3 de outubro de 2012 16:20, Milton Bastos Henriquis Jr. < > miltonbastos@...> escreveu: > > > O distinct remove registros duplicados de um SELECT. > > > > Vc falou em remover registros duplicados de uma TABELA. > > > > Explique melhor o que vc quer... vc quer apagar os registros FISICAMENTE > > ou quer apenas que os registros não apareçam repetidos no retorno do > > Select? > > > > > > 2012/10/3 Wanderson Barrence <wbarrence@...> > > > > > ** > > > > > > > > > Olá Pessoal, > > > > > > Parece até uma pergunta boba, mas fica aí a curiosidade, existe alguma > > > maneira de remover registros duplicados de uma tabela, ou de um conjunto > > de > > > tabelas sem utilizar o distinct? > > > > > > Att, > > > > > > -- > > > Wanderson Barrence > > > DBA Oracle 10g/11g > > > Analista de Testes - CBTS > > > ---------------------------------------------------------- > > > MSN: wbarrence@... > > > ICQ: 170821994 > > > Linkedin: http://br.linkedin.com/in/wbarrence > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > -- > > Att, > > > > > > [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] > [As partes desta mensagem que não continham texto foram removidas]