4

postgresql で GIN および GiST インデックスを検出するにはどうすればよいですか? postgres のデータベースがフルテキストを使用しているかどうかを探しています。テーブルは GIN o GiST を使用し、フルテキストを使用していると思います。

GIN または GiST インデックスが必ずしも全文検索に使用されるとは限らないことは承知していますが、それらを他のインデックス タイプと区別するにはどうすればよいですか? Gin an Gist インデックスを一覧表示したい

4

2 に答える 2

3

Postgresのソース コードを調べたところ、次の情報が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
于 2015-06-24T12:01:27.973 に答える
3

インデックス定義は、システム ビューによって供給されるシステム カタログ情報関数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';
于 2013-02-06T12:44:32.547 に答える