Datové typy tabulek v Synapse SQL
V tomto článku najdete doporučení pro definování datových typů tabulek ve vyhrazeném fondu Synapse SQL.
Datové typy
Vyhrazený fond Synapse SQL podporuje nejčastěji používané datové typy. Seznam podporovaných datových typů najdete v datovém typu v příkazu CREATE TABLE. Informace o bezserverové verzi Synapse SQL najdete v článku Dotazování souborů úložiště s bezserverovým fondem SQL ve službě Azure Synapse Analytics a použití OPENROWSET s využitím bezserverového fondu SQL ve službě Azure Synapse Analytics.
Minimalizace délky řádku
Minimalizace velikosti datových typů zkracuje délku řádku, což vede k lepšímu výkonu dotazů. Použijte nejmenší datový typ, který funguje pro vaše data.
- Vyhněte se definování sloupců znaků s velkou výchozí délkou. Pokud je například nejdelší hodnota 25 znaků, definujte sloupec jako VARCHAR(25).
- Nepoužívejte NVARCHAR, pokud potřebujete jenom VARCHAR.
- Pokud je to možné, použijte nVARCHAR(4000) nebo VARCHAR(8000) místo NVARCHAR(MAX) nebo VARCHAR(MAX).
- Nepoužívejte plovoucí desetinné čárky a desetinné čárky se škálováním 0 (nula). Měly by to být TINYINT, SMALLINT, INT nebo BIGINT.
Poznámka:
Pokud k načtení tabulek Synapse SQL používáte externí tabulky PolyBase, definovaná délka řádku tabulky nesmí překročit 1 MB. Pokud řádek s daty s proměnlivou délkou překročí 1 MB, můžete řádek načíst pomocí BCP, ale ne pomocí PolyBase.
Identifikace nepodporovaných datových typů
Pokud migrujete databázi z jiné databáze SQL, můžete narazit na datové typy, které nejsou v Synapse SQL podporované. Tento dotaz použijte ke zjištění nepodporovaných datových typů ve stávajícím schématu SQL.
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;
Alternativní řešení pro nepodporované datové typy
Následující seznam ukazuje datové typy, které Synapse SQL nepodporuje, a nabízí alternativy, které můžete použít místo nepodporovaných datových typů.
Nepodporovaný datový typ | Alternativní řešení |
---|---|
geometrie | varbinary |
zeměpis | varbinary |
hierarchyid | nvarchar(4000) |
image | varbinary |
text | varchar |
ntext | nvarchar |
sql_variant | Rozdělte sloupec na několik sloupců se silnými typy. |
stůl | Převeďte na dočasné tabulky nebo zvažte ukládání dat do úložiště pomocí CETAS. |
časová značka | Přepracujte kód tak, aby používal datetime2 a funkci CURRENT_TIMESTAMP . Jako výchozí se podporují jenom konstanty, proto current_timestamp nelze definovat jako výchozí omezení. Pokud potřebujete migrovat hodnoty verze řádků ze sloupce s typem časového razítka, použijte hodnotu BINARY(8) nebo VARBINARY(8) pro hodnoty verze ŘÁDKU NOT NULL nebo NULL. |
xml | varchar |
uživatelem definovaný typ | Pokud je to možné, převeďte zpět na nativní datový typ. |
výchozí hodnoty | Výchozí hodnoty podporují pouze literály a konstanty. |
Související obsah
Další informace o vývoji tabulek najdete v přehledu vývoje.