Обсуждение: show index from [table]

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

show index from [table]

От
Stefan Zweig
Дата:
hi list,

currently i am switching from mysql to pgsql, so i am a bit new to postgres' syntax.

at the moment i am looking in postgres for something which is similar to SHOW INDEX FROM [table] in mysql.
unfortunatelyi could not find anything satisfying relating to this issue. 
 

i have found out, that there is the -di option with psql.

but actually i would need the information from within a (postgres) sql-query. is there a possibility to get information
aboutthe indices which have been created on a table?
 

if there is not, it might be sufficient for me to get the create index strings, such like you get, when viewing a table
inpgAdmin:
 

-- Index: g_g114_b_idx

-- DROP INDEX g_g114_b_idx;

CREATE INDEX g_g114_b_idx ON g_g114 USING btree (b);

and parse them manually.

is that possible in any way?

maybe there is something similar to SHOW CREATE TABLE (as in MySQL) in postgresql.


thanks in advance,

stefan
_______________________________________________________________
SMS schreiben mit WEB.DE FreeMail - einfach, schnell und
kostenguenstig. Jetzt gleich testen! http://f.web.de/?mc=021192



Re: show index from [table]

От
Andreas Kretschmer
Дата:
Stefan Zweig <stefanzweig1881@web.de> schrieb:

> hi list,
> 
> currently i am switching from mysql to pgsql, so i am a bit new to
> postgres' syntax.

You are welcome.

> 
> at the moment i am looking in postgres for something which is similar
> to SHOW INDEX FROM [table] in mysql. unfortunately i could not find
> anything satisfying relating to this issue. 
> 
> i have found out, that there is the -di option with psql.

Yes, right.

> 
> but actually i would need the information from within a (postgres)
> sql-query. is there a possibility to get information about the indices
> which have been created on a table?

Yes, of corse. Please start psql with the -E - option. Now you can see
the underlying sql-statement for commands like \di.


Andreas
-- 
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect.                              (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly."    (unknow)
Kaufbach, Saxony, Germany, Europe.              N 51.05082°, E 13.56889°


Re: show index from [table]

От
Ireneusz Pluta
Дата:
Andreas Kretschmer napisał(a):
>
> Yes, right.
>
>   
>> but actually i would need the information from within a (postgres)
>> sql-query. is there a possibility to get information about the indices
>> which have been created on a table?
>>     
>
> Yes, of corse. Please start psql with the -E - option. Now you can see
> the underlying sql-statement for commands like \di.
>
>
>   
... or even better:
select * from pg_indexes where tablename = 'your_table';



Re: show index from [table]

От
Kristo Kaiv
Дата:
On 08.06.2007, at 18:25, Stefan Zweig wrote:
>
> but actually i would need the information from within a (postgres)  
> sql-query. is there a possibility to get information about the  
> indices which have been created on a table?
>
> if there is not, it might be sufficient for me to get the create  
> index strings, such like you get, when viewing a table in pgAdmin:


you can turn on echoing of psql commands sent to server with:
psql -E dbname
from there you can get the queries needed:

find the oid of table (unique object id)
********* QUERY **********
SELECT c.oid,  n.nspname,  c.relname
FROM pg_catalog.pg_class c     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ '^(miljon)$'  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;

find table indices (replace the oid by the value found with your  
previous query)
********* QUERY **********
SELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered,  
i.indisvalid, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true),  
c2.reltablespace
FROM pg_catalog.pg_class c, pg_catalog.pg_class c2,  
pg_catalog.pg_index i
WHERE c.oid = '16427' AND c.oid = i.indrelid AND i.indexrelid = c2.oid
ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname

here is my sample output:   relname    | indisprimary | indisunique | indisclustered |  
indisvalid |                       
pg_get_indexdef                       | reltablespace
--------------+--------------+-------------+---------------- 
+------------ 
+------------------------------------------------------------ 
+---------------
miljon_pkey  | t            | t           | f              |  
t          | CREATE UNIQUE INDEX miljon_pkey ON miljon USING btree  
(id) |             0
idx_blahblah | f            | f           | f              |  
t          | CREATE INDEX idx_blahblah ON miljon USING btree  
(sisu)     |             0
(2 rows)

hope this helps

Kristo