首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 數值資料類型完整對照:bigint、int、smallint、tinyint 選型指南

     編輯:關於SqlServer

整數類型規格對照表

資料類型儲存大小範圍適用場景
bigint 8 bytes -2^63 ~ 2^63-1
(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)
超大整數、遞增 ID 預估超過 21 億、時間戳毫秒數
int 4 bytes -2^31 ~ 2^31-1
(-2,147,483,648 ~ 2,147,483,647)
預設首選,一般整數、主鍵 ID、計數器
smallint 2 bytes -32,768 ~ 32,767 狀態碼、年份、小範圍計數
tinyint 1 byte 0 ~ 255 布林旗標(0/1)、枚舉值、百分比、極小計數

關鍵行為差異

1. 資料類型優先序

在運算式中混用類型時,SQL Server 依優先序自動提升:

bigint > smallmoney > int > smallint > tinyint

重要:tinyint/smallint/int 不會自動提升為 bigint,除非運算式明確包含 bigint 參數。

2. 函數返回類型

  • 參數為 bigint 時,函數返回 bigint
  • 否則依優先序推導,通常返回 int

選型決策樹

  1. 需儲存 > 21 億或 < -21 億?→ bigint
  2. 範圍在 -32,768 ~ 32,767?→ smallint(省 50% 空間 vs int)
  3. 範圍在 0 ~ 255?→ tinyint(省 75% 空間 vs int)
  4. 其餘通用整數場景?→ int(預設最佳平衡)

實務陷阱與避坑指南

陷阱後果解法
IDENTITY 使用 int,資料量超過 21 億 插入失敗,錯誤 8115 預估超過 10 億筆直接用 bigint
tinyint 存負數 溢位錯誤 改用 smallint 或 int
混合運算導致隱含轉換 索引失效、效能下降 統一參數類型,避免 CAST
前端語言 long 對應 bigint C# long、Java long 皆 8 bytes,完美對應 ORM 映射正確設定

空間節省實測

假設 1 億筆資料:

  • int:~ 400 MB
  • smallint:~ 200 MB(省 50%)
  • tinyint:~ 100 MB(省 75%)

大型資料表選擇窄類型,可顯著降低記憶體壓力、備份時間與 I/O 成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved