List columns with indexes in PostgreSQL

后端 未结 23 2007
我在风中等你
我在风中等你 2020-11-27 09:14

I would like to get the columns that an index is on in PostgreSQL.

In MySQL you can use SHOW INDEXES FOR table and look at the Column_name

23条回答
  •  误落风尘
    2020-11-27 09:42

    Please try the query below to drill down to required index's

    Query as below -- i have tried this personally and use it frequently.

    SELECT n.nspname as "Schema",
      c.relname as "Name",
      CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' 
    THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
      u.usename as "Owner",
     c2.relname as "Table"
    FROM pg_catalog.pg_class c
         JOIN pg_catalog.pg_index i ON i.indexrelid = c.oid
         JOIN pg_catalog.pg_class c2 ON i.indrelid = c2.oid
         LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner
         LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relkind IN ('i','')
          AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
          AND pg_catalog.pg_table_is_visible(c.oid)
          AND c2.relname like '%agg_transaction%' --table name
          AND nspname = 'edjus' -- schema name 
    ORDER BY 1,2;
    

提交回复
热议问题