The informasi skema adalah cara lambat dan pasti: itu adalah standar dan sebagian besar portabel untuk database lain yang mendukungnya. Dan itu akan terus bekerja di versi utama.
Namun, pandangan dalam skema informasi sering kali bergabung dalam banyak tabel dari katalog sistem untuk memenuhi format standar yang ketat - banyak di antaranya hanya barang mati sebagian besar. Ini membuat mereka lambat .
Pengembang Postgres tidak membuat janji, tetapi dasar-dasar (seperti apa yang dibutuhkan di sini) tidak akan berubah di berbagai versi utama.
psql
(antarmuka baris perintah asli) mengambil jalur cepat, tentu saja, dan menanyakan sumber secara langsung. Jika Anda mulai psql
dengan parameter-E
, SQL di belakang perintah backslash suka \d
ditampilkan. Atau \set ECHO_HIDDEN on
dari baris perintah psql. Mulai dari sana Anda dapat membangun jawaban untuk pertanyaan Anda.
Diberikan satu tabel, apakah mungkin untuk memiliki daftar nama-nama kolom untuk tabel ini.
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;
Lebih cepat dari permintaaninformation_schema.columns
. Coba EXPLAIN ANALYZE
lihat sendiri. Masih sulit untuk satu kali pencarian. Tetapi mungkin membuat perbedaan jika digunakan dalam kueri / fungsi yang diulang berkali-kali.
Ada juga perbedaan visibilitas yang halus. Perbandingan rinci: