O esquema de informações é lento e seguro: é padronizado e amplamente portável para outros bancos de dados que o suportam. E continuará trabalhando nas principais versões.
No entanto, as visualizações no esquema de informações geralmente se juntam a muitas tabelas dos catálogos do sistema para atender a um formato estritamente padronizado - muitas das quais são apenas frete morto na maioria das vezes. Isso os torna lentos .
Os desenvolvedores do Postgres não estão fazendo promessas, mas o básico (como o que é necessário aqui) não mudará nas principais versões.
psql
(a interface da linha de comando nativa) toma a pista rápida, é claro, e consulta a fonte diretamente. Se você começar psql
com o parâmetro-E
, o SQL atrás dos comandos de barra invertida como \d
será exibido. Ou a \set ECHO_HIDDEN on
partir da linha de comando psql. A partir daí, você pode criar uma resposta para sua pergunta.
Em uma tabela, é possível ter uma lista dos nomes das colunas para esta tabela.
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;
Mais rápido que consultarinformation_schema.columns
. Tente EXPLAIN ANALYZE
ver por si mesmo. Ainda dificilmente importa para uma consulta única. Mas pode fazer a diferença se usado em uma consulta / função repetida várias vezes.
Também existem diferenças sutis na visibilidade. Comparação detalhada: