Re: runtime of the same query in function differs on 2 degree! - Mailing list pgsql-performance

From Gaetano Mendola
Subject Re: runtime of the same query in function differs on 2 degree!
Date
Msg-id 3F7CBA4E.6020302@bigfoot.com
Whole thread Raw
In response to runtime of the same query in function differs on 2 degree!  (Andriy Tkachuk <ant@imt.com.ua>)
Responses Re: runtime of the same query in function differs on 2
List pgsql-performance
Andriy Tkachuk wrote:

> Hi folks.
>
> What's wrong with planner that executes my query in function?:
> (i mean no explanation but runtime)
>
>
> tele=# EXPLAIN analyze select calc_total(6916799, 1062363600, 1064955599);
>                                         QUERY PLAN
> ------------------------------------------------------------------------------------------
>  Result  (cost=0.00..0.01 rows=1 width=0) (actual time=36919.37..36919.37 rows=1 loops=1)
>  Total runtime: 36919.40 msec
>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> tele=# \df+ calc_total
> ...
> declare
>         usr alias for $1;
>         d1 alias for $2;
>         d2   alias for $3;
>         res integer;
> begin
>         select sum(cost) into res
>                 from bills where
>                         (parent(user_id) = usr or user_id = usr)
>                         and dat >= d1 and dat < d2;
>         if res is not null then
>                 return res;
>         else
>                 return 0;
>         end if;
> end;

You didn't wrote the type of d1 and d2, I had your same problem:

declare
    a_user alias for $1;
    res INTEGER;
begin
          select cost into res
          from my_table
          where login = a_user;

    ......
end;

the problem was that login was a VARCHAR and a_user was a TEXT so
the index was not used, was enough cast a_user::varchar;


I believe that your dat, d1, d2 are not "index" comparable.


Gaetano











pgsql-performance by date:

Previous
From: "scott.marlowe"
Date:
Subject: Re: further testing on IDE drives
Next
From: "CN"
Date:
Subject: Is This My Speed Limit?