From: | 李彦 Ian Li <liyan82(at)gmail(dot)com> |
---|---|
To: | Stefano Dal Pra <s(dot)dalpra(at)gmail(dot)com> |
Cc: | PostgreSQL Performance <pgsql-performance(at)postgresql(dot)org> |
Subject: | Re: two queryes in a single tablescan |
Date: | 2007-10-18 02:24:50 |
Message-ID: | 4716C3F2.5040206@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance pgsql-sql |
I remember when I was using SQL server we did like like that:
SELECT count(CASE WHEN A THEN 1 END) AS cnt_a, count(CASE WHEN B
THEN 1 END) AS cnt_b FROM tab WHERE C;
I did a little test with pg_bench data, also works in PostgreSQL:
test=# select count(*) from history where tid = 1;
count
-------
574
(1 行)
时间: 9.553 ms
test=# select count(*) from history where tid = 2;
count
-------
1107
(1 行)
时间: 8.949 ms
test=# select count(CASE WHEN tid = 1 then 1 END) as t1_cont,
count(case when tid=2 then 1 end) as t2_cnt from history ;
t1_cont | t2_cnt
---------+--------
574 | 1107
(1 行)
时间: 17.182 ms
Hope that helps.
Regards
Stefano Dal Pra wrote:
> Hi everybody,
>
> suppose you have a large table tab and two (or more) queryes like this:
>
> SELECT count(*),A FROM tab WHERE C GROUP BY A;
> SELECT count(*),B FROM tab WHERE C GROUP BY B;
>
> is there any way to get both results in a single query,
> eventually through stored procedure?
> The retrieved [count(*),A] ; [count(*),B)] data couldnt fit
> on a single table, of course.
>
> The main goal would be to get multiple results while scanning the
> table[s] once only
> thus getting results in a faster way.
>
> This seems to me quite a common situation but i have no clue whether a neat
> solution can be implemented through stored procedure.
>
> Any hint?
>
> Thank you
>
> Stefano
From | Date | Subject | |
---|---|---|---|
Next Message | Stéphane Schildknecht | 2007-10-18 06:17:27 | Re: Vacuum goes worse |
Previous Message | Ow Mun Heng | 2007-10-18 01:33:46 | Re: Shared Buffer setting in postgresql.conf |
From | Date | Subject | |
---|---|---|---|
Next Message | chester c young | 2007-10-20 02:11:29 | backup database tablespace with rsync? |
Previous Message | Boergesson, Cheryl | 2007-10-17 18:49:37 |