Tabelldatatyper i Synapse SQL
I den här artikeln hittar du rekommendationer för att definiera tabelldatatyper i Synapse SQL Dedicated Pool.
Datatyper
Synapse SQL Dedicated Pool stöder de vanligaste datatyperna. En lista över de datatyper som stöds finns i datatyper i CREATE TABLE-instruktionen. För Synapse SQL Serverless läser du artikeln Fråga lagringsfiler med serverlös SQL-pool i Azure Synapse Analytics och Använda OPENROWSET med serverlös SQL-pool i Azure Synapse Analytics
Minimera radlängd
Om du minimerar storleken på datatyper förkortas radlängden, vilket ger bättre frågeprestanda. Använd den minsta datatypen som fungerar för dina data.
- Undvik att definiera teckenkolumner med en stor standardlängd. Om det längsta värdet till exempel är 25 tecken definierar du kolumnen som VARCHAR(25).
- Undvik att använda NVARCHAR när du bara behöver VARCHAR.
- Om möjligt använder du NVARCHAR(4000) eller VARCHAR(8000) i stället för NVARCHAR(MAX) eller VARCHAR(MAX).
- Undvik att använda flyttal och decimaler med skalan 0 (noll). Dessa bör vara TINYINT, SMALLINT, INT eller BIGINT.
Kommentar
Om du använder externa PolyBase-tabeller för att läsa in dina Synapse SQL-tabeller får den definierade längden på tabellraden inte överstiga 1 MB. När en rad med variabellängdsdata överskrider 1 MB kan du läsa in raden med BCP, men inte med PolyBase.
Identifiera datatyper som inte stöds
Om du migrerar databasen från en annan SQL-databas kan du stöta på datatyper som inte stöds i Synapse SQL. Använd den här frågan för att identifiera datatyper som inte stöds i ditt befintliga SQL-schema.
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;
Lösningar för datatyper som inte stöds
I följande lista visas de datatyper som Synapse SQL inte stöder och ger alternativ som du kan använda i stället för datatyper som inte stöds.
Datatypen stöds inte | Lösning |
---|---|
geometri | varbinary |
geografi | varbinary |
hierarchyid | nvarchar(4000) |
bild | varbinary |
text | varchar |
ntext | nvarchar |
sql_variant | Dela upp kolumnen i flera starkt skrivna kolumner. |
table | Konvertera till tillfälliga tabeller eller överväg att lagra data till lagring med hjälp av CETAS. |
Tidsstämpel | Omarbeta kod för att använda datetime2 och funktionen CURRENT_TIMESTAMP . Endast konstanter stöds som standardvärden, och därför kan current_timestamp inte definieras som en standardbegränsning. Om du behöver migrera radversionsvärden från en tidsstämpeltypad kolumn använder du BINARY(8) eller VARBINARY(8) för VERSIONSvärdena NOT NULL eller NULL. |
xml | varchar |
användardefinierad typ | Konvertera tillbaka till den interna datatypen när det är möjligt. |
Standardvärden | Standardvärden stöder endast literaler och konstanter. |
Relaterat innehåll
Mer information om hur du utvecklar tabeller finns i utvecklingsöversikten.