如何检测postgresql中的GIN和GiST索引?我正在寻找一个postgres的数据库是否使用全文。我认为一个表使用GIN或GiST,然后使用全文。如何检测杜松子酒和gist
我接受GIN或GiST索引并不一定意味着它们用于全文搜索,但我怎样才能区分它们的其他索引类型?我想列出Gin和Gist索引
如何检测postgresql中的GIN和GiST索引?我正在寻找一个postgres的数据库是否使用全文。我认为一个表使用GIN或GiST,然后使用全文。如何检测杜松子酒和gist
我接受GIN或GiST索引并不一定意味着它们用于全文搜索,但我怎样才能区分它们的其他索引类型?我想列出Gin和Gist索引
索引定义可以从System Catalog Information Functions以pg_get_indexdef()
重新创建,由pg_index
系统视图提供。输出在理论上不是无关紧要的,但实际上,一个简单的正则表达式足以在某些索引类型上过滤这些定义。
例如,要查找gist
或gin
索引,你可以使用这样的查询:
SELECT pg_get_indexdef(indexrelid) from pg_index
WHERE pg_get_indexdef(indexrelid) ~ 'USING (gin |gist)';
找到,如果某个数据库使用的全文,我可能会寻找tsvector
列,而不是,用这样的查询:
SELECT table_schema,table_name, column_name
FROM information_schema.columns
WHERE data_type='tsvector';
非常感谢丹尼尔 – user2044138
我在Postgres source code挖四周,发现这些信息存储在pg_am
表:
select i.relname, a.amname
from pg_index ix
left join pg_class i on ix.indexrelid = i.oid
left join pg_class t on ix.indrelid = t.oid
left join pg_am a on i.relam = a.oid
存在GIN或GiST索引并不一定意味着它们用于全文搜索。 – mvp