Tipos de dados de tabela em SQL de sinapse

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

Tipos de dados

O SQL Pool Dedicado 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 sinaapse SQL Serverless consulte os ficheiros de armazenamento de consulta de artigo com piscina de SQL sem servidor em Azure Synapse Analytics e Como usar OPENROWSET usando piscina de 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).

Nota

Se estiver a utilizar tabelas externas polyBase para carregar as tabelas de SQL sinapse, 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 SQL da Sinapse. Utilize esta consulta para descobrir tipos de dados não suportados no seu esquema de 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')
 AND  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 a Sinapse 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, pelo current_timestamp não podem ser definidas como uma restrição de incumprimento. Se precisar de migrar os valores da versão da linha a partir de uma coluna de etiqueta de tempo, utilize BINARY(8) ou VARBINARY(8) para valores de linha NÃO NULOS ou NULOS.
xml varchar
tipo definido pelo utilizador Converta-se de volta para o tipo de dados nativo quando possível.
valores de incumprimento Os 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.