<刁鑽專業-程式設計SQL-1> 沈源有 2025.1223
在 SQL Server, 用以下 command 建立一個table
CREATE TABLE [PERSON](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[NAME] [varchar](8) NOT NULL,
[AGE] [numeric](3, 0) NOT NULL
)
分析:
[AGE]欄位
- 至今有紀錄的最長壽, 應該不超過 150 歲吧. 我給定 0 ~ 999 很夠吧?
- 3位數的整數, 用 [numeric](3, 0). 讚. 經濟實惠, 節省儲存空間, 也節省計算效能耗用.
反駁:
「看似專業,實際錯誤」
乍看之下, 似乎很專業, 很認真規劃.
抽絲剝繭分析, 會發現半吊子的潛在專業危險.
專業人士要使用整數時, 不做第二選擇, 一定是
byte, small int, int, big int.
絕對不考慮 numeric(n, 0) / decimal(n, 0)
如果需要限制數字的位數 設定 約束條件(上限, 下限.)
numeric(n, m) / decimal(n, m)
是為 "精確小數" 量身訂做的.
申論:
numeric(n, 0) / decimal(n, 0)
- 是精確數字類型(fixed-point),不是原生二進位整數。
- 儲存和計算時,SQL Server 需要額外的轉換與運算處理
CPU 負擔比原生整數類型大。
- 每次算術運算都可能涉及定點運算和精度管理。
- 占記憶體空間, CPU計算還需多些步驟
--
結論.
專業, 真的很重要.
似懂非懂, 不懂裝懂, 半吊子真的很可怕.
半吊子的專業陷阱.
你以為的懂是真的懂嗎?
---
後記:
我承認我也是半吊子.
現在知識爆炸的世界, 誰不是半吊子?















