Tipos de dados de tabela no Synapse SQL

Neste artigo, você encontrará recomendações para definir tipos de dados de tabela no Synapse SQL Dedicated Pool.

Tipos de dados

Synapse SQL Dedicated Pool suporta os tipos de dados mais comumente usados. Para obter uma lista dos tipos de dados suportados, consulte os tipos de dados na instrução CREATE TABLE. Para Synapse SQL Serverless, consulte o artigo Consultar arquivos de armazenamento com pool SQL sem servidor no Azure Synapse Analytics e Como usar OPENROWSET usando pool SQL sem servidor no Azure Synapse Analytics

Minimizar o comprimento da linha

Minimizar o tamanho dos tipos de dados reduz o comprimento da linha, o que leva a um melhor desempenho da consulta. Use o menor tipo de dados que funciona para seus dados.

  • Evite definir colunas de caracteres com um grande comprimento padrão. Por exemplo, se o valor mais longo for de 25 caracteres, defina sua coluna como VARCHAR(25).
  • Evite usar NVARCHAR quando você só precisa de VARCHAR.
  • Quando possível, use NVARCHAR(4000) ou VARCHAR(8000) em vez de NVARCHAR(MAX) ou VARCHAR(MAX).
  • Evite usar flutuadores e decimais com escala 0 (zero). Estes devem ser TINYINT, SMALLINT, INT ou BIGINT.

Nota

Se você estiver usando tabelas externas PolyBase para carregar suas tabelas Synapse SQL, o comprimento definido da linha da tabela não pode exceder 1 MB. Quando uma linha com dados de comprimento variável excede 1 MB, você pode carregar a linha com BCP, mas não com PolyBase.

Identificar tipos de dados sem suporte

Se você estiver migrando seu banco de dados de outro banco de dados SQL, poderá encontrar tipos de dados que não são suportados no Synapse SQL. Use esta consulta para descobrir tipos de dados sem suporte em seu esquema SQL existente.

SELECT  t.[name], c.[name], c.[system_type_id], c.[user_type_id], y.[is_user_defined], y.[name]
FROM sys.tables  t
JOIN sys.columns c on t.[object_id]    = c.[object_id]
JOIN sys.types   y on c.[user_type_id] = y.[user_type_id]
WHERE y.[name] IN ('geography','geometry','hierarchyid','image','text','ntext','sql_variant','xml')
 OR  y.[is_user_defined] = 1;

Soluções alternativas para tipos de dados sem suporte

A lista a seguir mostra os tipos de dados que o Synapse SQL não oferece suporte e fornece alternativas que você pode usar em vez dos tipos de dados sem suporte.

Tipo de dados não suportado Solução
Geometria Varbinary
Geografia Varbinary
Hierarquia Nvarchar(4000)
imagem Varbinary
text Varchar
ntexto Nvarchar
sql_variant Divida a coluna em várias colunas fortemente tipadas.
tabela Converta em tabelas temporárias ou considere armazenar dados para armazenamento usando CETAS.
Carimbo de data/hora Retrabalhe o código para usar datetime2 e a função CURRENT_TIMESTAMP . Somente constantes são suportadas como padrão, portanto, current_timestamp não pode ser definida como uma restrição padrão. Se você precisar migrar valores de versão de linha de uma coluna digitada com carimbo de data/hora, use BINARY(8) ou VARBINARY(8) para valores de versão de linha NOT NULL ou NULL.
xml Varchar
Tipo definido pelo usuário Converta novamente para o tipo de dados nativo quando possível.
valores padrão Os valores padrão suportam apenas literais e constantes.

Próximos passos

Para obter mais informações sobre o desenvolvimento de tabelas, consulte Visão geral da tabela.