首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 資料類型與建庫策略:從空間優化到業務落地的完整指南

     編輯:MySQL 資料庫相關知識

核心觀點

合理的資料類型選型 = 節省儲存空間 + 提升查詢效能 + 避免隱式轉換坑。本文系統梳理數值、日期、字串、枚舉四大類型的選型邏輯與實戰策略。

數值類型:三大族群、精準定位

整數:越小越好、夠用即止

  • TINYINT (1B) → 狀態、布林、小計數
  • SMALLINT (2B) → 業務代碼、層級
  • MEDIUMINT (3B) → 千萬級自增主鍵
  • INT (4B) → 通用主鍵、外鍵
  • BIGINT (8B) → 分散式 ID、海量主鍵

案例:1600 萬行表用 MEDIUMINT 代替 INT,節省 1600萬 × 1B ≈ 15.3 MB。

定點數 DECIMAL:金額、精度敏感欄位的唯一正解

  • 以字串逐位儲存,運算零誤差
  • 價格 DECIMAL(10,2)、匯率 DECIMAL(18,6)
  • 空間較大但值得

浮點數 FLOAT/DOUBLE:科學計算專用,業務系統慎用

日期時間:按需分配、時區決策

型別空間適用
DATE3B純日期
TIME3B純時間
DATETIME8B通用、無時區轉換
TIMESTAMP4B跨時區、自動更新
YEAR1B僅年份

字串類型:定長 vs 變長、大文本分級

CHAR vs VARCHAR 選型公式

AVG_LENGTH / MAX_LENGTH > 0.9 → CHAR,否則 VARCHAR。

  • 股票名稱(固定 4 字) → CHAR(8)(UTF-8 下 4 字 = 12B,建議 CHAR(12))
  • 股票代碼(滬 6 位、深 4 位) → 滬深比例高 → CHAR(6) 更省

TEXT 家族:按長度分級

  • TINYTEXT (255B) → 短備註
  • TEXT (64KB) → 摘要、日誌
  • MEDIUMTEXT (16MB) → 正文、HTML
  • LONGTEXT (4GB) → 極大文檔

枚舉 ENUM / 集合 SET:極致壓縮的業務碼

  • 性別:ENUM('M','F') 1 字節,媲美 TINYINT 但可讀性強
  • 訂單狀態:ENUM('new','paid','shipped','done','cancel')
  • 文章標籤:SET('tech','life','travel','food')

注意:修改成員需 ALTER TABLE、不支援外鍵、跨資料庫遷移需轉換。

建庫策略五原則

  1. 業務精度優先:金額必用 DECIMAL,日期按時區選 TIMESTAMP/DATETIME
  2. 空間最小化:整數選最小夠用型別,字串定長/變長精算
  3. 避免隱式轉換:JOIN/WHERE 兩側型別、編碼、長度完全一致
  4. 預留擴充空間:VARCHAR 長度留 20% 餘量,ENUM 預留未來值
  5. 文檔化與評審:建立資料字典,上線前 DBA + 開發聯合評審

結語

資料類型選型不是一次性動作,而是伴隨業務演進的持續優化。建立「選型 → 驗證 → 監控 → 調整」閉環,才能讓資料庫在 TB 級資料下依然穩健高效。

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