ホームページ > データベース > mysql チュートリアル > PostgreSQL でインデックス付き列情報を抽出するにはどうすればよいですか?

PostgreSQL でインデックス付き列情報を抽出するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-29 21:57:16
オリジナル
602 人が閲覧しました

How to Extract Indexed Column Information in PostgreSQL?

PostgreSQL でのインデックス付き列情報の抽出

PostgreSQL では、インデックスに含まれる列の取得はデータベース分析とパフォーマンスの最適化にとって重要なタスクです。 MySQL の SHOW INDEXES FOR コマンドとは異なり、PostgreSQL にはこの情報を取得する簡単な方法がありません。ただし、システム テーブルと集計関数を利用すると、同様の結果を得ることができます。

インデックス付きの列とインデックスの取得

次のクエリは、pg_class、pg_index、インデックスとそれに関連する詳細を収集するための pg_attribute システム テーブルcolumns:

SELECT
    t.relname AS table_name,
    i.relname AS index_name,
    a.attname AS column_name
FROM
    pg_class t,
    pg_class i,
    pg_index ix,
    pg_attribute a
WHERE
    t.oid = ix.indrelid
    AND i.oid = ix.indexrelid
    AND a.attrelid = t.oid
    AND a.attnum = ANY(ix.indkey)
    AND t.relkind = 'r'
    AND t.relname LIKE 'table_name_pattern';
ログイン後にコピー

このクエリは、指定されたテーブルまたはテーブルのグループのすべてのインデックスのテーブル名、インデックス名、列名を取得します。

インデックス付き列のグループ化

各インデックスによってインデックス付けされた列の統合リストを取得するには、クエリを変更して結果をグループ化し、 array_to_string() 関数を使用して列名を集計します:

SELECT
    t.relname AS table_name,
    i.relname AS index_name,
    array_to_string(array_agg(a.attname), ', ') AS column_names
FROM
    pg_class t,
    pg_class i,
    pg_index ix,
    pg_attribute a
WHERE
    t.oid = ix.indrelid
    AND i.oid = ix.indexrelid
    AND a.attrelid = t.oid
    AND a.attnum = ANY(ix.indkey)
    AND t.relkind = 'r'
    AND t.relname LIKE 'table_name_pattern'
GROUP BY
    t.relname,
    i.relname;
ログイン後にコピー

このクエリは、テーブル名、インデックス名、および各インデックスに含まれる列のカンマ区切りリストを示す表形式の出力を提供します。この情報は、インデックス作成戦略を理解し、データベースのパフォーマンスを最適化するために役立ちます。

以上がPostgreSQL でインデックス付き列情報を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート