Tip
Microsoft Fabric Data Warehouse 是一個企業規模的關聯式倉庫,建立在資料湖基礎上,具備未來準備架構、內建 AI 及新功能。 如果你是資料倉儲新手,建議先從Fabric Data Warehouse開始。 現有的 專用 SQL 工作負載可升級至 Fabric,以取得資料科學、即時分析與報告等多項新功能。
本文包含了在專用 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)不支援的資料型態,並提供對未支援資料型態的有用替代方案。
| 不支援的資料型態 | Workaround |
|---|---|
| 幾何 | varbinary |
| 地理位置 | varbinary |
| hierarchyid | 恩瓦爾查爾(4000) |
| 圖像 | varbinary |
| 簡訊 | varchar |
| ntext | nvarchar |
| sql_variant | 將資料行分割成數個強型別資料行。 |
| 表格 | 轉換成臨時表格。 |
| 時間戳 | 重新編寫程式碼,改用 datetime2 和 CURRENT_TIMESTAMP 函式。 預設條件只支援常數,因此無法定義current_timestamp為預設約束。 如果你需要從時間戳記型別欄位遷移資料列的版本值,請使用 BINARY(8) 或 VARBINARY(8) 來取得非 NULL 或 NULL 的列版本值。 |
| xml | varchar |
| 使用者定義型別 | 盡可能轉回原生資料型別。 |
| 預設值 | 預設值僅支援文字值和常數。 |
下一步
欲了解更多關於資料表開發的資訊,請參閱 資料表概覽。