Get index information from information_schema?

Started by AlannYabout 18 years ago7 messagesgeneral
Jump to latest
#1AlannY
m@alanny.ru

Hello, there.

I need a method of extracting information about indexes of any table
from information_schema.

Have you any suggestions?

Thank you.

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: AlannY (#1)
Re: Get index information from information_schema?

AlannY wrote:

I need a method of extracting information about indexes of any table
from information_schema.

Have you any suggestions?

I am afraid that indexes are not covered by information_schema.

You'd have to dig into pg_catalog.pg_index for this.

Yours,
Laurenz Albe

#3Dann Corbit
DCorbit@connx.com
In reply to: Laurenz Albe (#2)
Re: Get index information from information_schema?

-----Original Message-----
From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-
owner@postgresql.org] On Behalf Of Albe Laurenz
Sent: Tuesday, March 18, 2008 1:24 AM
To: AlannY *EXTERN*; pgsql-general@postgresql.org
Subject: Re: [GENERAL] Get index information from information_schema?

AlannY wrote:

I need a method of extracting information about indexes of any table
from information_schema.

Have you any suggestions?

I am afraid that indexes are not covered by information_schema.

You'd have to dig into pg_catalog.pg_index for this.

Doesn't the PostgreSQL schema have the
INFORMATION_SCHEMA.KEY_COLUMN_USAGE view?

Or (conversely) are indexes not stored as constraints?

#4Erik Jones
erik@myemma.com
In reply to: Dann Corbit (#3)
Re: Get index information from information_schema?

On Mar 18, 2008, at 1:28 PM, Dann Corbit wrote:

-----Original Message-----
From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-
owner@postgresql.org] On Behalf Of Albe Laurenz
Sent: Tuesday, March 18, 2008 1:24 AM
To: AlannY *EXTERN*; pgsql-general@postgresql.org
Subject: Re: [GENERAL] Get index information from information_schema?

AlannY wrote:

I need a method of extracting information about indexes of any table
from information_schema.

Have you any suggestions?

I am afraid that indexes are not covered by information_schema.

You'd have to dig into pg_catalog.pg_index for this.

Doesn't the PostgreSQL schema have the
INFORMATION_SCHEMA.KEY_COLUMN_USAGE view?

Or (conversely) are indexes not stored as constraints?

Only if they are PRIMARY KEY or UNIQUE indexes.

Erik Jones

DBA | Emma®
erik@myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com

#5Dann Corbit
DCorbit@connx.com
In reply to: Erik Jones (#4)
Re: Get index information from information_schema?

-----Original Message-----
From: Erik Jones [mailto:erik@myemma.com]
Sent: Tuesday, March 18, 2008 11:51 AM
To: Dann Corbit
Cc: Albe Laurenz; AlannY *EXTERN*; pgsql-general@postgresql.org
Subject: Re: [GENERAL] Get index information from information_schema?

On Mar 18, 2008, at 1:28 PM, Dann Corbit wrote:

-----Original Message-----
From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-
owner@postgresql.org] On Behalf Of Albe Laurenz
Sent: Tuesday, March 18, 2008 1:24 AM
To: AlannY *EXTERN*; pgsql-general@postgresql.org
Subject: Re: [GENERAL] Get index information from

information_schema?

AlannY wrote:

I need a method of extracting information about indexes of any

table

from information_schema.

Have you any suggestions?

I am afraid that indexes are not covered by information_schema.

You'd have to dig into pg_catalog.pg_index for this.

Doesn't the PostgreSQL schema have the
INFORMATION_SCHEMA.KEY_COLUMN_USAGE view?

Or (conversely) are indexes not stored as constraints?

Only if they are PRIMARY KEY or UNIQUE indexes.

It looks like Foreign keys are included as well, because I get the
correct results for this query:

create table t1 (c1 int not null, c2 int not null, c3 char(5), c4 int,
c5 int, constraint pk_t1 PRIMARY KEY (c5,c4));

create table t2 (tc1 int not null, c1 int not null, c2 int not null, c5
char(5), constraint fk_t2 FOREIGN KEY (c1,c2) references t1 (c5,c4));

select CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION from
information_schema.key_column_usage where TABLE_NAME in ('t1', 't2');

So the only thing that will be missing are the indexes that are none of
the above.

It's a shame that there really is no information schema for indexes in
that category.

#6Erik Jones
erik@myemma.com
In reply to: Dann Corbit (#5)
Re: Get index information from information_schema?

On Mar 18, 2008, at 5:42 PM, Dann Corbit wrote:

correct results for this query:

create table t1 (c1 int not null, c2 int not null, c3 char(5), c4 int,
c5 int, constraint pk_t1 PRIMARY KEY (c5,c4));

create table t2 (tc1 int not null, c1 int not null, c2 int not null,
c5
char(5), constraint fk_t2 FOREIGN KEY (c1,c2) references t1 (c5,c4));

select CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION from
information_schema.key_column_usage where TABLE_NAME in ('t1', 't2');

So the only thing that will be missing are the indexes that are none
of
the above.

It's a shame that there really is no information schema for indexes in
that category.

Careful with that, foreign keys are not at all indexes although it is
common practice to put indexes on columns with them.

Erik Jones

DBA | Emma®
erik@myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com

#7Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Dann Corbit (#3)
Re: Get index information from information_schema?

Dann Corbit wrote:

I need a method of extracting information about indexes of any table
from information_schema.

Have you any suggestions?

I am afraid that indexes are not covered by information_schema.

You'd have to dig into pg_catalog.pg_index for this.

Doesn't the PostgreSQL schema have the
INFORMATION_SCHEMA.KEY_COLUMN_USAGE view?

Or (conversely) are indexes not stored as constraints?

You will find constraints in information_schema, but not indexes.
In general, indexes are no constraints.

Some constraints are implemented as indexes (primary key, unique),
but that's a different story.

Yours,
Laurenz Albe