Tipos de dados de tabela no SQL do Synapse

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

Tipos de dados

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

Minimizar o tamanho da linha

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

  • Evite definir as colunas de caractere como um tamanho padrão grande. Por exemplo, se o maior valor for 25 caracteres, defina a coluna como VARCHAR(25).
  • Evite usar NVARCHAR quando precisar somente de VARCHAR.
  • Quando possível, use NVARCHAR(4000) ou VARCHAR(8000) em vez de NVARCHAR(MAX) ou VARCHAR(MAX).
  • Evite usar flutuações e casas decimais com escala de 0 (zero). Eles devem ser TINYINT, SMALLINT, INT ou BIGINT.

Observação

Se você usa tabelas externas PolyBase para carregar as tabelas do SQL do Synapse, o tamanho definido da linha da tabela não pode exceder 1 MB. Quando uma linha com dados de tamanho variável exceder 1 MB, você poderá carregar a linha com BCP, mas não com PolyBase.

Identificar tipos de dados sem suporte

Se você estiver migrando o banco de dados de outro banco de dados SQL, poderá encontrar alguns tipos de dados que não são compatíveis no SQL do Synapse. Use esta consulta para descobrir os 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 os tipos de dados sem suporte

A lista a seguir mostra os tipos de dados com os quais o SQL do Synapse não é compatível e fornece alternativas que você pode usar no lugar dos tipos de dados sem suporte.

Tipos de dados sem suporte Solução alternativa
geometria varbinary
geografia varbinary
hierarchyid nvarchar(4000)
imagem varbinary
text varchar
ntext nvarchar
sql_variant Divida a coluna em várias colunas fortemente tipadas.
table Converter em tabelas temporárias ou armazenar dados no armazenamento usando CETAS.
timestamp Refazer o código para usar datetime2 e a função CURRENT_TIMESTAMP. Somente as constantes são suportados como padrões, portanto, current_timestamp não pode ser definida como uma restrição padrão. Se precisar migrar os valores de versão de linha de uma coluna tipada com o carimbo de data/hora, use BINARY(8) ou VARBINARY(8) para os valores de versão de linha NOT NULL ou NULL.
xml varchar
Tipos definidos pelo usuário Converta para o tipo de dados nativo quando possível.
valores padrão Os valores padrão dão suporte somente a literais e constantes.

Próximas etapas

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