情報スキーマは遅いと確実な方法である:それは、標準化とそれをサポートする他のデータベースへの大部分は、ポータブルです。そして、それはメジャーバージョン間で機能し続けます。
ただし、情報スキーマのビューは、厳密に標準化された形式を満たすために、システムカタログの多くのテーブルに結合することがよくあります。その多くは、ほとんどの場合、単なる貨物です。これはそれらを遅くします。
Postgresの開発者は約束をしていませんが、基本的なもの(ここで必要なものなど)はメジャーバージョン間で変更されません。
psql
(ネイティブコマンドラインインターフェイス)は、もちろん高速レーンを使用し、ソースに直接クエリを実行します。psql
パラメータ-E
で開始すると、バックスラッシュコマンドのようなSQL \d
が表示されます。または\set ECHO_HIDDEN on
、psqlコマンドラインから。そこから始めて、質問に対する答えを作成できます。
1つのテーブルが与えられた場合、このテーブルの列の名前のリストを持つことは可能ですか?
SELECT attrelid::regclass AS tbl
, attname AS col
, atttypid::regtype AS datatype
-- more attributes?
FROM pg_attribute
WHERE attrelid = 'myschema.mytable'::regclass -- table name, optionally schema-qualified
AND attnum > 0
AND NOT attisdropped
ORDER BY attnum;
クエリinformation_schema.columns
よりも高速です。EXPLAIN ANALYZE
自分で見てみてください。一度の検索では、まだほとんど問題になりません。しかし、何度も繰り返されるクエリ/関数で使用すると、違いが生じる可能性があります。
視認性にも微妙な違いがあります。詳細な比較: