Pessoal:

Um pouco após o lançamento da versão 8.2 correu nesta lista alguns relatos de 
problemas de performance após a atualização. Não sei se em linux ou windows. O 
fato é que mantive a 8.1.2 que vinha usando e somente na última semana 
atualizei para a 8.1.6. Agora estão começando a aparecer comentários sobre a 
8.3 que não sei se já tem previsão de lançamento.

O fato é o seguinte: quem teve problemas de performance quando passou a 
utilizar a 8.2 já conseguiu resolver estes problemas? Quais eram e como foram 
resolvidos? Alguém pode me dar motivos para atualizar para a 8.3? E para a 8.3?

Antecipo agradecimentos,

Sergio Medeiros Santi
Trabin Software & Consulting
53 3227 4157  -  53 9982 9009
  ----- Original Message ----- 
  From: Alessandro Pedroso (Pedrosinho) 
  To: Grupo de Usuários do PostgreSQL no Brasil 
  Sent: Sunday, March 18, 2007 1:35 PM
  Subject: Re: [PostgreSQL-Brasil] Dias da Semana


  Rodrigo

  Bacana sua abordagem com o array.

  Gostaria se possível que esclarecesse o seu "repúdio" com o CASE a título de 
informação, sei que ele torna  a consulta mais pesada em algumas situações, 
porém em certas ocasiões uso o CASE como um "Binary OR"  dentro de clausulas 
WHERE com um ganho de performance significativo em relação a um filtro com  AND 
OR (que também é oneroso).

  Seria um caso para a criação de um operador como o "?" do C ? (se é que ele 
não existe)

  Aproveitando a deixa.

  Teremos um stand do PostgreSQL no FISL?
  Moro em Porto Alegre posso contribuir em algo se precisar.

  []'s Pedrosinho


    ----- Original Message ----- 
    From: Rodrigo Hjort 
    To: Grupo de Usuários do PostgreSQL no Brasil 
    Sent: Saturday, March 17, 2007 8:38 PM
    Subject: Re: [PostgreSQL-Brasil] Dias da Semana


    Pessoal,

    Já que querem usar a cláusula CASE (a qual repudio veementemente), por que 
não usam-na de outra forma [1], que onera um pouco menos o SGBD? É o análogo de 
se trocar um IF-ELSEIF-...-ELSEIF por um SWITCH CASE. Além disso, usar as 
funções extract() ou date_part() para retornar o dia da semana [2] é bem mais 
elegante e seguro do que usar uma função de formatação/transformação como o 
to_char(). 

    A consulta poderia ficar assim:

    SELECT
      CASE extract(dow from now())
        WHEN 0 THEN 'domingo'
        WHEN 1 THEN 'segunda'
        -- ...
        WHEN 6 THEN 'sábado'
        ELSE 'erro' 
      END;

    Mas, para simplificar e deixar mais limpo o código, usaria a forma a seguir:

    SELECT 
('{domingo,segunda,terça,quarta,quinta,sexta,sábado}'::text[])[extract(dow from 
now()) + 1];

    [1] http://www.postgresql.org/docs/current/static/functions-conditional.html
    [2] http://www.postgresql.org/docs/8.2/interactive/functions-datetime.html

    -- 
    Atenciosamente,

    Rodrigo Hjort
    Icewall Tecnologias
    http://www.icewall.com.br



    2007/3/16, Adriano Espinoza de Oliveira <[EMAIL PROTECTED]>: 
      Uso a função abaixo, bem parecida com o que a Milena sugeriu:

      CREATE OR REPLACE FUNCTION "public"."dia_da_semana" (integer) RETURNS 
varchar AS
      $body$
      begin
        return
          case
            when $1 = 0 then 'domingo' 
            when $1 = 1 then 'segunda'
            when $1 = 2 then 'terça'
            when $1 = 3 then 'quarta'
            when $1 = 4 then 'quinta'
            when $1 = 5 then 'sexta'
            when $1 = 6 then 'sábado' 
            else 'ERRO'
          end;
      end;
      $body$
      LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;




      Em 16/03/07, [EMAIL PROTECTED] < [EMAIL PROTECTED]> escreveu: 
            Milena...
            Vai aí uma dica...

        SELECT CASE WHEN TO_CHAR(CURRENT_DATE, 'D') = 1 THEN 'DOMINGO'
                    WHEN TO_CHAR(CURRENT_DATE, 'D') = 2 THEN 'SEGUNDA'
                    WHEN TO_CHAR(CURRENT_DATE, 'D') = 3 THEN 'TERCA'
                    WHEN TO_CHAR(CURRENT_DATE, 'D') = 4 THEN 'QUARTA'
                    WHEN TO_CHAR(CURRENT_DATE, 'D') = 5 THEN 'QUINTA'
                    WHEN TO_CHAR(CURRENT_DATE, 'D') = 6 THEN 'SEXTA'
                    WHEN TO_CHAR(CURRENT_DATE, 'D') = 7 THEN 'SABADO'
               END AS DIA_DA_SEMANA;


           --
        Sidnei Samuel Klein 





----------------------------------------------------------------------------


    _______________________________________________
    Grupo de Usuários do PostgreSQL no Brasil
    Antes de perguntar consulte o manual
    http://pgdocptbr.sourceforge.net/

    Para editar suas opções ou sair da lista acesse a página da lista em:
    http://pgfoundry.org/mailman/listinfo/brasil-usuarios


------------------------------------------------------------------------------


  _______________________________________________
  Grupo de Usuários do PostgreSQL no Brasil
  Antes de perguntar consulte o manual
  http://pgdocptbr.sourceforge.net/

  Para editar suas opções ou sair da lista acesse a página da lista em:
  http://pgfoundry.org/mailman/listinfo/brasil-usuarios
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a