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 poskytuje alternativy, které můžete použít místo nepodporovaných datových typů.

Nepodporovaný datový typ Alternativní řešení
Geometrie Varbinary
Geografie Varbinary
Hierarchyid nvarchar(4000)
Obrázek Varbinary
text Varchar
Ntext Nvarchar
Sql_variant Rozdělte sloupec na několik sloupců se silnými typy.
Tabulka Převeďte na dočasné tabulky nebo zvažte ukládání dat do úložiště pomocí CETAS.
Časové razítko Přepracujte kód tak, aby používal datetime2 a funkci CURRENT_TIMESTAMP . Jako výchozí se podporují pouze 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.

Další kroky

Další informace o vývoji tabulek najdete v tématu Přehled tabulek.