How much clustered?

Started by Carlos Henrique Reimerabout 20 years ago5 messagesgeneral
Jump to latest
#1Carlos Henrique Reimer
carlosreimer@yahoo.com.br

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.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Carlos Henrique Reimer (#1)
Re: How much clustered?

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

#3Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#2)
Re: How much clustered?

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. +

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#3)
Re: How much clustered?

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

#5Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#4)
Re: How much clustered?

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. +