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 | 修改程式碼來使用 datetime2 和 CURRENT_TIMESTAMP 函式。 僅支援常數做為預設值,因此 current_timestamp 不能定義為預設條件約束。 如果您需要從時間戳記類型的資料行移轉資料列版本值,請對 NOT NULL 或 NULL 資料列版本值使用 BINARY(8) 或 VARBINARY(8)。 |
xml | varchar |
使用者定義型別 | 可能時,請轉換回原生資料類型。 |
預設值 | 預設值僅支援常值和常數。 |
下一步
如需開發資料表的詳細資訊,請參閱資料表概觀。