Tipos de dados de tabela em Sinaapse SQL

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

Tipos de dados

O Pool Dedicado Synapse SQL suporta os tipos de dados mais utilizados. Para obter uma lista dos tipos de dados suportados, consulte os tipos de dados na declaração CREATE TABLE. Para Synapse SQL Serverless consulte os ficheiros de armazenamento de consulta de artigos com piscina SQL sem servidor em Azure Synapse Analytics e Como usar OPENROWSET usando piscina SQL sem servidor em Azure Synapse Analytics

Minimizar o comprimento da linha

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

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

Nota

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

Identificar tipos de dados não suportados

Se estiver a migrar a sua base de dados de outra base de dados SQL, poderá encontrar tipos de dados que não sejam suportados no Sinapse SQL. Utilize esta consulta para descobrir tipos de dados não suportados no 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 não suportados

A lista a seguir mostra os tipos de dados que o Synapse SQL não suporta e oferece alternativas que pode utilizar em vez dos tipos de dados não suportados.

Tipo de dados não suportado Solução
geometria varbinário
geografia varbinário
hierarquia nvarchar(4000)
imagem varbinário
Texto varchar
ntext nvarchar
sql_variant Divida a coluna em várias colunas fortemente dactilografada.
table Converta-se em tabelas temporárias ou considere armazenar dados para armazenamento utilizando o CETAS.
timetamp Retraia o código para utilizar a data 2 e a função CURRENT_TIMESTAMP . Apenas as constantes são suportadas como incumprimentos, portanto current_timestamp não pode ser definido como uma restrição de incumprimento. Se precisar de migrar os valores da versão da linha a partir de uma coluna dactilografada por tempos, utilize BINARY(8) ou VARBINARY(8) para valores de versão NÃO NULAS ou NULAS.
xml varchar
tipo definido pelo utilizador Converta-se de volta para o tipo de dados nativo quando possível.
valores de incumprimento Valores predefinidos suportam apenas as constantes e literais.

Passos seguintes

Para obter mais informações sobre o desenvolvimento de tabelas, consulte a Visão Geral da Tabela.