SQL Server 設計資料庫資料型別 (Data Type) 筆記

2021-02-20

筆記在設計資料庫時,選擇資料型別 (Data Type) 的考量點以及最佳實務。

SQL Server Logo

說明

設計良好的資料庫不僅易於開發也能有更好的效能,本次的筆記嘗試蒐集資料庫設計資料型別上的 Best Practices,並融入個人的開發與實驗,從而不斷修正本筆記內容。

最佳實務

日期時間

DateTime : 支援 1753年1月1日以後的日期,使用 8 Bytes
DateTime2(n) : 支援 0001年1月1日以後的日期,使用 6 至 8 Bytes,可以藉由參數 n 指定精確奈秒
Date : 支援 0001年1月1日以後的日期,使用 3 Bytes
Time : 提供時間類型資料使用,使用 3 至 5 Bytes

字串類型

  1. VARCHAR 的成本在於 CPU 運算存取; CHAR 的成本在於 HDD 的硬碟存取空間
  2. N 系列的資料類型支援 Unicode ,但資料存取的長度會變長 2 倍,如果文字類型僅有英數字不應該使用 N 系列資料類型
  3. 即使在資料庫中存入 NULL 也會占用硬碟空間,設計資料庫欄位長度時要留意。 (使用 EXEC sp_spaceused 驗證)

最佳實務建議

  1. 使用 bit 來儲存 True/False 類型的資料
  2. 使用 NVARCHAR(MAX) 來儲存 HTML 內容
  3. 使用 CHAR 來儲存固定長度的英數字,例如身分證字號

不要再使用的資料型別 ❌

微軟建議不要使用的資料型別:

  • NTEXT : 改用 NVARCHAR(MAX)
  • TEXT : 改用 VARCHAR(MAX)
  • Numeric : 改用 Decimal
  • Image : 改用 VARBINARY(MAX)

參考資料

How Your SQL Server Data Type Choices Can Affect Database Performance

史丹利好熱 - BIG5難字寫入資料庫(Unicode篇)