Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku najdete doporučení pro definování datových typů tabulek ve vyhrazeném fondu Synapse SQL.
Datové typy
Synapse SQL vyhrazený fond podporuje nejčastěji používané datové typy. Seznam podporovaných datových typů najdete v části datové typy 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).
- Vyhněte se používání čísel s plovoucí desetinnou čárkou a desetinných čísel s měřítkem 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 | Dočasné ř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ů s explicitně definovaný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 řádku ze sloupce s typem časového razítka, použijte BINARY(8) nebo VARBINARY(8) pro hodnoty verze řádku s 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.