Re: two queryes in a single tablescan
От | 李彦 Ian Li |
---|---|
Тема | Re: two queryes in a single tablescan |
Дата | |
Msg-id | 4716C3F2.5040206@gmail.com обсуждение исходный текст |
Ответ на | two queryes in a single tablescan ("Stefano Dal Pra" <s.dalpra@gmail.com>) |
Список | pgsql-performance |
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
В списке pgsql-performance по дате отправления: