Azure Synapse Analytics 中專用 SQL 集區 (先前稱為 SQL DW) 的資料表資料類型

本文包含在專用 SQL 集區中定義資料表資料類型的建議。

支援的資料類型

專用 SQL 集區 (先前稱為 SQL DW) 支援最常用的資料類型。 如需支援的資料類型清單,請參閱 CREATE TABLE 陳述式中的資料類型

將資料列長度最小化

將資料類型的大小最小化可縮短資料列長度,這樣會提升查詢效能。 使用您的資料適用之最小資料類型。

  • 避免使用較大的預設長度來定義字元資料行。 例如,如果最長的值是 25 個字元,請將您的資料行定義為 VARCHAR(25)。
  • 當您僅需要 VARCHAR 時,請避免使用 NVARCHAR
  • 儘可能使用 NVARCHAR(4000) 或 VARCHAR(8000),而非 NVARCHAR(MAX) 或 VARCHAR(MAX)。

如果您使用 PolyBase 外部資料表來載入資料表,定義的資料表資料列長度不得超過 1 MB。 當資料列的變數長度資料超過 1 MB 時,您可以使用 BCP 但不可使用 PolyBase 載入資料列。

識別不支援的資料類型

如果您要從另一個 SQL 資料庫遷移您的資料庫,您可能會發現專用 SQL 集區中不支援的資料類型。 使用下列查詢以找出您現有 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')
 AND  y.[is_user_defined] = 1;

不支援的資料類型可用的因應措施

下列清單顯示專用 SQL 集區 (先前稱為 SQL DW) 不支援的資料類型,並且提供不支援資料類型的有用替代項目。

不支援的資料類型 因應措施
幾何 varbinary
地理位置 varbinary
hierarchyid nvarchar(4000)
image varbinary
text varchar
ntext nvarchar
sql_variant 將資料行分割成數個強型別資料行。
table 轉換成暫存資料表。
timestamp 修改程式碼來使用 datetime2CURRENT_TIMESTAMP 函式。 僅支援常數做為預設值,因此 current_timestamp 不能定義為預設條件約束。 如果您需要從時間戳記類型的資料行移轉資料列版本值,請對 NOT NULL 或 NULL 資料列版本值使用 BINARY(8) 或 VARBINARY(8)。
xml varchar
使用者定義型別 可能時,請轉換回原生資料類型。
預設值 預設值僅支援常值和常數。

後續步驟

如需開發資料表的詳細資訊,請參閱資料表概觀