Обсуждение: [GENERAL] unnest-like pg_stats.most_common_values and pg_stats.most_common_freqs

Поиск
Список
Период
Сортировка

[GENERAL] unnest-like pg_stats.most_common_values and pg_stats.most_common_freqs

От
Luca Ferrari
Дата:
Hi all,
maybe this is trivial, but I need an hint on a way to see a table form
of the MCVs and MCFs out of pg_stats with a query. Is it possible to
get a set of rows each with a most common value on one column and the
corresponding column on the the other? (assuming I can cast the array
of MCVs to the right type array)

Thanks,
Luca


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: [GENERAL] unnest-like pg_stats.most_common_values andpg_stats.most_common_freqs

От
Justin Pryzby
Дата:
On Fri, Nov 17, 2017 at 09:32:23PM +0100, Luca Ferrari wrote:
> Hi all,
> maybe this is trivial, but I need an hint on a way to see a table form
> of the MCVs and MCFs out of pg_stats with a query. Is it possible to
> get a set of rows each with a most common value on one column and the
> corresponding column on the the other? (assuming I can cast the array
> of MCVs to the right type array)

I think you want something like this ?

postgres=# SELECT schemaname, tablename, attname, unnest(histogram_bounds::text::text[]), histogram_bounds FROM
pg_statsLIMIT 9;pg_catalog | pg_pltemplate | tmplname    | plperl              |
{plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}pg_catalog| pg_pltemplate | tmplname    | plperlu
          | {plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}pg_catalog | pg_pltemplate | tmplname
 | plpgsql             | {plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}pg_catalog |
pg_pltemplate| tmplname    | plpython2u          |
{plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}pg_catalog| pg_pltemplate | tmplname    |
plpython3u         | {plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}pg_catalog | pg_pltemplate |
tmplname   | plpythonu           | {plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}pg_catalog |
pg_pltemplate| tmplname    | pltcl               |
{plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}pg_catalog| pg_pltemplate | tmplname    | pltclu
          | {plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}pg_catalog | pg_pltemplate |
tmplhandler| plperl_call_handler |
{plperl_call_handler,plperlu_call_handler,plpgsql_call_handler,plpython2_call_handler,plpython3_call_handler,plpython_call_handler,pltcl_cal
l_handler,pltclu_call_handler}

Justin


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: [GENERAL] unnest-like pg_stats.most_common_values and pg_stats.most_common_freqs

От
Luca Ferrari
Дата:
On Fri, Nov 17, 2017 at 9:41 PM, Justin Pryzby <pryzby@telsasoft.com> wrote:
> I think you want something like this ?
>
> postgres=# SELECT schemaname, tablename, attname, unnest(histogram_bounds::text::text[]), histogram_bounds FROM
pg_statsLIMIT 9;
 
>  pg_catalog | pg_pltemplate | tmplname    | plperl              |
{plperl,plperlu,plpgsql,plpython2u,plpython3u,plpythonu,pltcl,pltclu}

I don't think it is what I'm looking for, I would like something ,like:
select unnest( histogram_bounds::text::text[] ), unnest(
most_common_freqs ) from pg_stats

but with correlation between the two array indexes. Is it something
achievable in SQL? Or should I use a plpgsql loop with an index?

Luca


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: [GENERAL] unnest-like pg_stats.most_common_values and pg_stats.most_common_freqs

От
Tom Lane
Дата:
Luca Ferrari <fluca1978@infinito.it> writes:
> I don't think it is what I'm looking for, I would like something ,like:
>  select unnest( histogram_bounds::text::text[] ), unnest(
> most_common_freqs ) from pg_stats
> but with correlation between the two array indexes. Is it something
> achievable in SQL? Or should I use a plpgsql loop with an index?

Those two aren't correlated ... but I think what you want is

select ...,v,f
from pg_stats, rows from (unnest(most_common_vals::text::text[]),            unnest(most_common_freqs)) r(v,f)
where ...

Seems to work back to 9.4.
        regards, tom lane


Re: [GENERAL] unnest-like pg_stats.most_common_values and pg_stats.most_common_freqs

От
Luca Ferrari
Дата:
On Mon, Nov 20, 2017 at 4:38 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Those two aren't correlated ... but I think what you want is
>
> select ...,v,f
> from
>   pg_stats,
>   rows from (unnest(most_common_vals::text::text[]),
>              unnest(most_common_freqs)) r(v,f)
> where ...

Of course I was meaning MCVs and MCFs, it did not make sense to use
the histogram here!
Thanks for the query, it works (tested on 9.6.6).

Luca