Sdílet prostřednictvím


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

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.

Další informace o vývoji tabulek najdete v přehledu vývoje.