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 Synapse SQL Serverless, confira o artigo Consultar arquivos de armazenamento com pool SQL sem servidor no Azure Synapse Analytics e Como usar OPENROWSET com pool 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 seu banco de dados de outro banco de dados SQL, poderá encontrar tipos de dados que não têm suporte no Synapse SQL. 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 que o Synapse SQL não dá suporte 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 constantes têm suporte como padrões, portanto current_timestamp não pode ser definido 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. |
Conteúdo relacionado
Para obter mais informações sobre o desenvolvimento de tabelas, confira a visão geral do desenvolvimento.