View a markdown version of this page

Consulta a tabelas do sistema - Amazon Redshift

O Amazon Redshift deixará de oferecer suporte ao uso de UDFs em Python após 30 de junho de 2026. Começaremos a aplicar essa alteração em fases. Consulte mais informações sobre os detalhes do fim da vida útil do Python e as opções de migração na publicação do blog publicada em 30 de junho de 2025.

Consulta a tabelas do sistema

Se nem a API de metadados do driver nem os comandos SHOW satisfizerem suas necessidades, você poderá consultar diretamente as tabelas do catálogo do PostgreSQL (pg_*), o esquema de informações (information_schema) ou as visualizações do sistema Amazon Redshift, como SVV_TABLE_INFO.

Essa abordagem é útil para tarefas ad hoc de exploração, depuração ou administração que você executa a partir de consultas SQL interativas, por exemplo, no Editor de Consultas V2 do Amazon Redshift ou psql. No entanto, as estruturas do catálogo do sistema podem mudar em todas as versões do Amazon Redshift. Não recomendamos que você confie em consultas diretas à tabela do sistema como interface de metadados para integrações de aplicativos de produção.

Ao consultar tabelas do sistema, siga estas práticas:

  • Especifique banco de dados, esquema e tabela. Para obter o melhor desempenho, inclua o nome do banco de dados, o nome do esquema e o nome da tabela em seus filtros de consulta. Limitar o escopo reduz a quantidade de metadados que o Amazon Redshift precisa verificar e retornar.

  • Use filtros de igualdade ou LIKE. Use igualdade (=) ou predicados LIKE na cláusula WHERE para restringir os resultados. Evite consultas não filtradas em grandes visualizações de catálogos. Elas podem ser lentas em clusters com muitos objetos.

  • Evite funções em predicados de filtro. Não use funções como LOWER() ou concatenação de strings na cláusula WHERE ao filtrar consultas de tabelas do sistema. Isso impede pesquisas eficientes de metadados e pode reduzir significativamente o desempenho da consulta.

Exemplo de consultas antipadrão x recomendadas

-- Avoid: SELECT * FROM svv_all_columns; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public' AND table_name = 'sales';
-- Avoid: SELECT * FROM svv_all_columns WHERE LOWER(schema_name) = 'public'; -- Recommended: SELECT * FROM svv_all_columns WHERE schema_name = 'public' AND table_name LIKE 'sales%';
-- Avoid: SELECT * FROM svv_all_columns WHERE database_name || '.' || schema_name || '.' || table_name = 'dev.public.sales'; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public' AND table_name = 'sales';
-- Avoid: SELECT * FROM svv_all_columns WHERE CONCAT(database_name, '.', schema_name) = 'dev.public'; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public';