/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Liste alle indexes med PostgreSQL
Fra : Kasper Johansen


Dato : 03-08-06 00:01

Hej gruppe.

Med hvilken SQL-forespørgsel lister jeg alle indexes for en specifik
tabel? Med tilhørende columns osv.

Har forsøgt mig på Google i lidt over 2-3 timer nu uden held...


--
Med venlig hilsen
Kasper Johansen

 
 
Troels Arvin (07-08-2006)
Kommentar
Fra : Troels Arvin


Dato : 07-08-06 17:33

On Thu, 03 Aug 2006 01:01:19 +0200, Kasper Johansen wrote:
> Med hvilken SQL-forespørgsel lister jeg alle indexes for en specifik
> tabel? Med tilhørende columns osv.

Hvis vi taler den interaktive prompt, så:
\d <tabelnavn>

Ellers:
- I visse programmeringsmiljøer (de fleste?) kan man få
metadata fra tabeller, evt. ved først at skabe et tomt
resultatsæt:
SELECT * FROM tabelnavn WHERE 0=1
Måske dit programmeringsmiljø inkluderer informationer
om tabel-indexes?

- Ellers, noget i stil med nedenstående, hvor vi antager, at
din tabel hedder "bar" og dit schema hedder "public":

SELECT
pc2.relname AS idxname,
pa.attname AS colname
FROM pg_catalog.pg_class AS pc1
JOIN pg_catalog.pg_index AS pi ON pc1.oid = pi.indrelid
JOIN pg_catalog.pg_class AS pc2 ON pi.indexrelid = pc2.oid
JOIN pg_catalog.pg_attribute AS pa ON
(
pa.attrelid = pc1.oid AND
pa.attnum > 0 AND
pa.attisdropped = False AND
pa.attnum = ANY(pi.indkey)
)
JOIN pg_catalog.pg_namespace AS pn ON pc1.relnamespace=pn.oid
WHERE
pc1.relkind = 'r' AND
pn.nspname = 'public' AND
pc1.relname = 'bar';

Se http://www.postgresql.org/docs/8.1/static/catalogs.html for
en guide til PostgreSQL's systemkataloger.

--
Greetings from Troels Arvin


Søg
Reklame
Statistik
Spørgsmål : 177455
Tips : 31962
Nyheder : 719565
Indlæg : 6408147
Brugere : 218880

Månedens bedste
Årets bedste
Sidste års bedste