Tabelldatatyper för dedikerad SQL-pool (tidigare SQL DW) i Azure Synapse Analytics
I den här artikeln ingår rekommendationer för att definiera tabelldatatyper i en dedikerad SQL-pool.
Datatyper som stöds
Dedikerad SQL-pool (tidigare SQL DW) stöder de vanligaste datatyperna. En lista över de datatyper som stöds finns i datatyper i CREATE TABLE-instruktionen.
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.
- När det är möjligt använder du NVARCHAR(4000) eller VARCHAR(8000) i stället för NVARCHAR(MAX) eller VARCHAR(MAX).
Om du använder externa PolyBase-tabeller för att läsa in tabellerna får tabellradens definierade längd 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 kanske du hittar datatyper som inte stöds i en dedikerad SQL-pool. Använd följande fråga 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')
AND y.[is_user_defined] = 1;
Lösningar för datatyper som inte stöds
I följande lista visas de datatyper som den dedikerade SQL-poolen (tidigare SQL DW) inte stöder och ger användbara alternativ för datatyper som inte stöds.
Datatyp som inte stöds | Lösning |
---|---|
geometry | 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 temporära tabeller. |
Tidsstämpel | Omarbeta kod för att använda datetime2 och funktionen CURRENT_TIMESTAMP . Endast konstanter stöds som standardvärden, så current_timestamp kan 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 VÄRDEN FÖR NOT NULL- eller NULL-radversion. |
Xml | varchar |
användardefinierad typ | Konvertera tillbaka till den inbyggda datatypen när det är möjligt. |
Standardvärden | Standardvärden stöder endast literaler och konstanter. |
Nästa steg
Mer information om hur du utvecklar tabeller finns i Tabellöversikt.