Pular para o conteúdo
  • Este tópico contém 14 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 7 meses atrás por Rodrigo Almeida.
Visualizando 15 posts - 1 até 15 (de 15 do total)
  • Autor
    Posts
  • #88287
    Fabiodjs
    Participante

      Oi 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!

      #88288
      Fabiodjs
      Participante

        correção: select coluna_1 from tabela_1 group by coluna_1

        #88291
        Rodrigo Almeida
        Participante

          Na 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

          #88298
          Fabiodjs
          Participante

            Algué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 😉

            #88299
            Rodrigo Mesquita
            Participante

              No 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..)

              #88301
              Fabiodjs
              Participante

                Ok, obrigado!
                mas como eu mesmo posso avaliar o tal “custo”?

                #88303
                Rodrigo Mesquita
                Participante

                  o 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’));

                  #88305
                  Fabiodjs
                  Participante

                    Obrigado 😉

                    #88311
                    Rodrigo Almeida
                    Participante

                      Bom,

                      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

                      #88314
                      Fabiodjs
                      Participante

                        Desculpa 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.

                        #88316
                        Rodrigo Almeida
                        Participante

                          Fabio,

                          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

                          #88317
                          Fabiodjs
                          Participante

                            Justamente alphamek, foi sobre isso que eu queria saber

                            http://oracle.ittoolbox.com/groups/tech … se-1781396

                            obrigado!

                            #88318
                            Rodrigo Almeida
                            Participante

                              E 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

                              #88319
                              Rodrigo Mesquita
                              Participante

                                Fabio

                                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

                                #88332
                                Rodrigo Almeida
                                Participante

                                  Isso 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

                                Visualizando 15 posts - 1 até 15 (de 15 do total)
                                • Você deve fazer login para responder a este tópico.