- Este tópico contém 14 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 7 meses atrás por
Rodrigo Almeida.
-
AutorPosts
-
28 de julho de 2009 às 9:12 pm #88287
Fabiodjs
ParticipanteOi pessoal!
1. gostaria de saber, qual o comando mais rápido entre:
select distinct coluna_1 from tabela_1
ou
select coluna_1 from coluna_1 group by coluna_1
2. Uso o Toad for Oracle e nele mostra o tempo de espera da consulta, mas gostaria de analisar melhor a performance de minhas consultas. Alguém poderia me orientar?
Obrigado!
28 de julho de 2009 às 9:13 pm #88288Fabiodjs
Participantecorreção: select coluna_1 from tabela_1 group by coluna_1
28 de julho de 2009 às 9:27 pm #88291Rodrigo Almeida
ParticipanteNa verdade o correto seria:
select função_agregação() from group by ;
O Group by precisa ter uma função de agregação, SUM, AVG e etc..
Tudo é uma questão de reflexão! Pq até mesmo o GROUP BY e DISTINCT tem funções diferentes, um é para trazer valores DISTINTOS, outro é para AGRUPAR os valores de acordo com a sua necessidade e sumarização desejada.
Abraços,
Rodrigo Almeida
28 de julho de 2009 às 10:18 pm #88298Fabiodjs
ParticipanteAlguém pode responder a minha pergunta 😀
Sei das diferenças “filosóficas” das duas, mas todas as duas consultas funcionam. Inclusive a com group by ( mesmo não tendo função de grupo ).
Não é isso que quero saber….
Gostaria de saber na verdade, qual das duas formas é a mais rápida.
e também gostaria de saber como medir corretamente a performance das minhas consultas, para que eu me vire nas próximas 😉
28 de julho de 2009 às 10:25 pm #88299Rodrigo Mesquita
ParticipanteNo teu exemplo acima as duas consultas vão ter o mesmo resultado e o mesmo custo, porem como boa prática de programação é recomentado que vc utilize o distinct nesta sua consulta já que vc quer apenas trazer valores distintos. Utilize o group by apenas quando desejar realizar alguma consulta sintética e for usar uma função de agregação(AVG(), SUM(), COUNT(), MIN() e MAX(), etc..)
28 de julho de 2009 às 10:40 pm #88301Fabiodjs
ParticipanteOk, obrigado!
mas como eu mesmo posso avaliar o tal “custo”?28 de julho de 2009 às 10:48 pm #88303Rodrigo Mesquita
Participanteo PL/sql developer, o sql developer, e acredito que o TOAD tem opção de vizualizar o plano de execução da query, mas vc pode usar tambem o bom e velho Xplan da oracle no sqlplus.
explain plan SET STATEMENT_ID=’QRY’ for Select From ;
Set LINESIZE 30000;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’QRY’,’ALL’));28 de julho de 2009 às 11:04 pm #88305Fabiodjs
ParticipanteObrigado 😉
28 de julho de 2009 às 11:20 pm #88311Rodrigo Almeida
ParticipanteBom,
Sem criar uma redundância nas resposta.
Veja o link abaixo:
http://oracle.ittoolbox.com/groups/tech … se-1781396
Com DEMOs:
http://www.psoug.org/reference/group_by.html
E depois, uma breve explicação do group by:
http://etutorials.org/SQL/Mastering+Ora … BY+Clause/
Só não achei com figuras, mas acho que esses links vão te ajudar.
E mais humildade na próxima.
Abraços,
Rodrigo Almeida
29 de julho de 2009 às 12:05 am #88314Fabiodjs
ParticipanteDesculpa alphamek, juro que não tive nenhuma intenção de ser grosso…
tanto que coloquei um sorriso quando pedi para alguém responder minha pergunta.mas precisei perguntar novamente, pois a sua resposta não me ajudou, já que sei, ao menos um pouco, sobre a finalidade do proup by e do distinct.
Na verdade o RodrigoMesquita também não havia respondido a minha pergunta, mas o “plano de execução” sim. Esse detalhe me ajudou.
Li o que eu escrevi novamente e você tem razão. Mas mais uma vez lhe peço desculpas e agradeço ao tentar me ajudar.
29 de julho de 2009 às 12:14 am #88316Rodrigo Almeida
ParticipanteFabio,
Sem problemas e confusão. Tu foi meio rude sim na resposta. Porém, a interpretação é feita de diversos pontos de vista.
E isso pode confundir muitas vezes. Mas é isso. Espero que possamos te ajudar futuramente.
Abraços,
Rodrigo Almeida
29 de julho de 2009 às 12:16 am #88317Fabiodjs
ParticipanteJustamente alphamek, foi sobre isso que eu queria saber
http://oracle.ittoolbox.com/groups/tech … se-1781396
obrigado!
29 de julho de 2009 às 12:18 am #88318Rodrigo Almeida
ParticipanteE desculpas aceitas, e estamos aí para ajudar e não criar polêmica.
Fabio, continue se sentindo em casa e se possível procurando a nossa ajuda ou ajudando outros.
Abraços,
Rodrigo Almeida
29 de julho de 2009 às 12:24 am #88319Rodrigo Mesquita
ParticipanteFabio
Quando respondi lá em cima “duas consultas vão ter o mesmo resultado e o mesmo custo” estava respondendo sua pergunta de qual consulta seria mais performática, mas concordo que merecia mais detalhes. e em relação ao comentário do Rodrigo concordo que interpretar o que tava escrito é mais fácil do que interpretar a carinha hehe….
precisando de mais alguma coisa é só falar!
Abraços,
Rodrigo Mesquita
29 de julho de 2009 às 4:29 am #88332Rodrigo Almeida
ParticipanteIsso aí Chará! Boa iniciativa também.
Fabio,
Desculpas também se fui ríspido em minha resposta. Vamos esquecer e continuar a ajudar a comunidade da melhor forma.
Aqui ninguem é melhor que ninguem. Pois:
“Quem não compartilha, não multiplica.”
Abraços,
Rodrigo Almeida
-
AutorPosts
- Você deve fazer login para responder a este tópico.