Thread: How much clustered?

How much clustered?

From
Carlos Henrique Reimer
Date:
Hi,
 
I would like to know how much clustered is a table related to some index.... How can I discover?
 
Reimer


Yahoo! doce lar. Faça do Yahoo! sua homepage.

Re: How much clustered?

From
Tom Lane
Date:
Carlos Henrique Reimer <carlosreimer@yahoo.com.br> writes:
>   I would like to know how much clustered is a table related to some index.... How can I discover?

You could do
    select ctid from mytable order by indexcolumns
and then do whatever sort of calculation strikes your fancy on the
sequence of page numbers.  (It's probably fair to ignore the row
numbers, considering an index to be fully clustered if the page
reference sequence is perfect.)

            regards, tom lane

Re: How much clustered?

From
Bruce Momjian
Date:
Tom Lane wrote:
> Carlos Henrique Reimer <carlosreimer@yahoo.com.br> writes:
> >   I would like to know how much clustered is a table related to some index.... How can I discover?
>
> You could do
>     select ctid from mytable order by indexcolumns
> and then do whatever sort of calculation strikes your fancy on the
> sequence of page numbers.  (It's probably fair to ignore the row
> numbers, considering an index to be fully clustered if the page
> reference sequence is perfect.)

Currently we output the ctid as a string:

    snprintf(buf, sizeof(buf), "(%u,%u)", blockNumber, offsetNumber);

Perhaps someday we should consider outputting that as an array or a
result set:

    test=> select x from (select 1, 2) as x;
       x
    -------
     (1,2)
    (1 row)

--
  Bruce Momjian   http://candle.pha.pa.us
  SRA OSS, Inc.   http://www.sraoss.com

  + If your life is a hard drive, Christ can be your backup. +

Re: How much clustered?

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Currently we output the ctid as a string:
>     snprintf(buf, sizeof(buf), "(%u,%u)", blockNumber, offsetNumber);
> Perhaps someday we should consider outputting that as an array or a
> result set:

It's not an array, because the two components are not of the same data
type; and it's not a result set, any more than (say) a point or a box
is.  What it is is a record datatype.

There might be some usefulness to adding SQL functions to allow
extraction of the block number and item number fields, though we'd have
some problems with the lack of a uint4 datatype to represent the block
number field's type.  The demand for this has been too low to make me
feel we need to expend that effort...

            regards, tom lane

Re: How much clustered?

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Currently we output the ctid as a string:
> >     snprintf(buf, sizeof(buf), "(%u,%u)", blockNumber, offsetNumber);
> > Perhaps someday we should consider outputting that as an array or a
> > result set:
>
> It's not an array, because the two components are not of the same data
> type; and it's not a result set, any more than (say) a point or a box
> is.  What it is is a record datatype.
>
> There might be some usefulness to adding SQL functions to allow
> extraction of the block number and item number fields, though we'd have
> some problems with the lack of a uint4 datatype to represent the block
> number field's type.  The demand for this has been too low to make me
> feel we need to expend that effort...

Agreed, I was just pointing out that someday it might need improvement.

--
  Bruce Momjian   http://candle.pha.pa.us
  SRA OSS, Inc.   http://www.sraoss.com

  + If your life is a hard drive, Christ can be your backup. +