Hello Postgres Hackers,

In reference to this todo item about clustering system table indexes,           
( http://archives.postgresql.org/pgsql-hackers/2004-05/msg00989.php ) 
I have been studying the system tables to see which would benefit  from 
clustering.  I have some index suggestions and a question if you have a 
moment.

Cluster Candidates:

        pg_attribute:  Make the existing index ( attrelid, attnum ) clustered 
to 
        order it by table and column.
        
        pg_attrdef:  Existing index ( adrelid, adnum ) clustered to order it
        by table and column.

        pg_constraint:  Existing index ( conrelid ) clustered to get table 
        constraints contiguous.

        pg_depend: Existing Index (refclassid, refobjid, refobjsubid) clustered
        to so that when the referenced object is changed its dependencies 
        arevcontiguous.

        pg_description: Make the existing index ( Objoid, classoid, objsubid ) 
        clustered to order it by entity, catalog, and optional column.  
                * reversing the first two columns makes more sense to me ... 
                catalog, object, column or since object implies catalog ( 
right? ) 
                just dispensing with catalog altogether, but that would mean 
                creating a new index.
        
        pg_shdependent: Existing index (refclassid, refobjid) clustered for 
        same reason as pg_depend.

        pg_statistic: Existing index (starelid, staattnum) clustered to order 
        it by table and column.

        pg_trigger:  Make the existing index ( tgrelid, tgname ) clustered to 
        order it by table then name getting all the triggers on a table 
together.

Maybe Cluster:

        pg_rewrite: Not sure about this one ... The existing index ( ev_class,
        rulename ) seems logical to cluster to get all the rewrite rules for a
        given table contiguous but in the db's available to me virtually every
        table only has one rewrite rule.  

        pg_auth_members:  We could order it by role or by member of
        that role.  Not sure which would be more valuable.


Stupid newbie question:


        is there a way to make queries on the system tables show me what 
        is actually there when I'm poking around?  So for example:

                Select * from pg_type limit 1;

        tells me that the typoutput is 'boolout'.  An english string rather 
than 
        a number.  So even though the documentation says that column
        maps to pg_proc.oid I can't then write:

                Select * from pg_proc where oid = 'boolout';

        It would be very helpful if I wasn't learning the system but since I
        am I'd like to turn it off for now.  Fewer layers of abstraction.


Thanks,

Simone Aiken

303-956-7188
Quietly Competent Consulting





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

Reply via email to