PostgreSQLでインデックス付きの列を一覧表示する方法
PostgreSQLでインデックス付きの列を一覧表示する方法
方法1:\dコマンドを使用する
\d テーブル名
このコマンドは、指定されたテーブルに関する情報を表示します。その情報の中には、インデックス付きの列も含まれます。
例
\d customers
出力例:
テーブル "public.customers"
列名 | データ型 | 修飾子 | 説明
-------+---------+---------+---------
id | integer | not null |
first_name | text | |
last_name | text | |
email | text | |
created_at | timestamp | |
updated_at | timestamp | |
インデックス | 列名 | ソート順 |
------------+---------+---------+
customers_pkey | id | ASC |
方法2:pg_indexesビューを使用する
pg_indexes
ビューは、データベース内のすべてのインデックスに関する情報を提供します。
SELECT indexname, tablename, columnname
FROM pg_indexes
WHERE tablename = 'テーブル名';
SELECT indexname, tablename, columnname
FROM pg_indexes
WHERE tablename = 'customers';
indexname | tablename | columnname
----------+---------+---------
customers_pkey | customers | id
方法3:情報スキーマを使用する
情報スキーマには、データベース内のすべてのオブジェクトに関する情報が格納されています。
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'テーブル名'
AND indexname IS NOT NULL;
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'customers'
AND indexname IS NOT NULL;
column_name
------------
id
上記以外にも、GUIツールやサードパーティ製のツールを使用して、インデックス付きの列を一覧表示することができます。
\d customers
テーブル "public.customers"
列名 | データ型 | 修飾子 | 説明
-------+---------+---------+---------
id | integer | not null |
first_name | text | |
last_name | text | |
email | text | |
created_at | timestamp | |
updated_at | timestamp | |
インデックス | 列名 | ソート順 |
------------+---------+---------+
customers_pkey | id | ASC |
SELECT indexname, tablename, columnname
FROM pg_indexes
WHERE tablename = 'customers';
indexname | tablename | columnname
----------+---------+---------
customers_pkey | customers | id
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'customers'
AND indexname IS NOT NULL;
column_name
------------
id
PostgreSQLでインデックス付きの列を一覧表示するその他の方法
方法4:EXPLAINを使用する
EXPLAIN
コマンドは、クエリの実行計画を表示します。実行計画には、使用されるインデックスも含まれます。
EXPLAIN SELECT * FROM テーブル名;
EXPLAIN SELECT * FROM customers;
QUERY PLAN
--------------------------------------------------------------------------------------------------
InitPlan 1 (returns $1)
-> Seq Scan on customers (cost=0.00..10.00 rows=1000 width=44)
Filter: (id = 1)
pg_stat_user_indexes
ビューは、各インデックスの使用状況に関する情報を提供します。
SELECT indexname, tablename, columnname, idx_scan
FROM pg_stat_user_indexes
WHERE tablename = 'テーブル名';
SELECT indexname, tablename, columnname, idx_scan
FROM pg_stat_user_indexes
WHERE tablename = 'customers';
indexname | tablename | columnname | idx_scan
----------+---------+---------+---------
customers_pkey | customers | id | 0
方法6:GUIツールを使用する
pgAdminやDBeaverなどのGUIツールを使用して、インデックス付きの列を一覧表示することができます。
PostgreSQLでインデックス付きの列を一覧表示するには、いくつかの方法があります。各方法にはそれぞれメリットとデメリットがあるので、状況に合わせて最適な方法を選択する必要があります。
sql postgresql indexing