SQL Server 設計資料庫資料型別 (Data Type) 筆記
2021-02-20
筆記在設計資料庫時,選擇資料型別 (Data Type) 的考量點以及最佳實務。
說明
設計良好的資料庫不僅易於開發也能有更好的效能,本次的筆記嘗試蒐集資料庫設計資料型別上的 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
字串類型
- VARCHAR 的成本在於 CPU 運算存取; CHAR 的成本在於 HDD 的硬碟存取空間
- N 系列的資料類型支援 Unicode ,但資料存取的長度會變長 2 倍,如果文字類型僅有英數字不應該使用 N 系列資料類型
- 即使在資料庫中存入 NULL 也會占用硬碟空間,設計資料庫欄位長度時要留意。 (使用 EXEC sp_spaceused 驗證)
最佳實務建議
- 使用 bit 來儲存 True/False 類型的資料
- 使用 NVARCHAR(MAX) 來儲存 HTML 內容
- 使用 CHAR 來儲存固定長度的英數字,例如身分證字號
不要再使用的資料型別 ❌
微軟建議不要使用的資料型別:
- NTEXT : 改用 NVARCHAR(MAX)
- TEXT : 改用 VARCHAR(MAX)
- Numeric : 改用 Decimal
- Image : 改用 VARBINARY(MAX)
參考資料
How Your SQL Server Data Type Choices Can Affect Database Performance