El esquema de información es lento y seguro: está estandarizado y es en gran medida portátil a otras bases de datos que lo admiten. Y seguirá funcionando en las principales versiones.
Sin embargo, las vistas en el esquema de información a menudo se unen en muchas tablas de los catálogos del sistema para cumplir con un formato estrictamente estandarizado, muchas de las cuales son solo carga muerta la mayor parte del tiempo. Esto los hace lentos .
Los desarrolladores de Postgres no están haciendo promesas, pero lo básico (como lo que se necesita aquí) no va a cambiar en las versiones principales.
psql
(la interfaz de línea de comandos nativa) toma el carril rápido, por supuesto, y consulta la fuente directamente. Si comienza psql
con el parámetro-E
, \d
se muestra el SQL detrás de los comandos de barra diagonal inversa como . O \set ECHO_HIDDEN on
desde la línea de comando psql. A partir de ahí, puede crear una respuesta a su pregunta.
Dada una tabla, ¿es posible tener una lista de los nombres de las columnas para esta tabla?
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;
Más rápido que consultarinformation_schema.columns
. Intenta EXPLAIN ANALYZE
verlo por ti mismo. Todavía apenas importa para una búsqueda única. Pero podría marcar la diferencia si se usa en una consulta / función que se repite muchas veces.
También hay diferencias sutiles en la visibilidad. Comparación detallada: