gho*_*der 2 sql postgresql psql
我能够做大部分我能做的事,但不是全部。
如果我有 :
\d+ myschema.mytable
Run Code Online (Sandbox Code Playgroud)
我列出了所有列和索引。索引的格式例如:
Indexes:
"id_pkey" PRIMARY KEY, btree (id,name,timestamp)
"ix05_id" btree (name,company)
Run Code Online (Sandbox Code Playgroud)
我能够通过sql以及有关索引和键的列来获取信息,我已经从上面的帖子中找到了一些sql,但是并不能完全采用这种格式。
因此对于键,我能够做到:
SELECT
pg_attribute.attname,
format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
FROM pg_index, pg_class, pg_attribute, pg_namespace
WHERE
pg_class.oid = 'mytable'::regclass AND
indrelid = pg_class.oid AND
nspname = 'myschema' AND
pg_class.relnamespace = pg_namespace.oid AND
pg_attribute.attrelid = pg_class.oid AND
pg_attribute.attnum = any(pg_index.indkey)
AND indisprimary
Run Code Online (Sandbox Code Playgroud)
因此,这一行获取键所适用的列,而不是索引/键的名称?如何在上面的查询中添加呢?我需要加入什么桌子?
对于索引,我能够做到
SELECT * FROM pg_indexes WHERE tablename = 'mytable' AND schemaname = 'myschema' ;
Run Code Online (Sandbox Code Playgroud)
哪个获取索引,但未明确列出它们适用的列-我只看到indexdef是如何创建的?我可以通过与其他表连接来获取该信息,还是必须解析indexdef并获取适用于该列的索引?