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

MySQL Schema 優化核心:主鍵資料類型選擇鐵律與避坑指南

     編輯:MySQL 資料庫相關知識

主鍵類型選擇直接影響效能、儲存空間、外鍵關聯一致性。核心原則:類型最小化、全庫統一、避免字串與隨機值。

整數類型:首選

  • 運算快、支援 AUTO_INCREMENT
  • 範例:美國州代碼用 TINYINT (1 字節) 即可,不用 INT (4 字節)。作為外鍵時節省 75% 空間
  • 屬性 UNSIGNED 必須全庫一致

ENUM/SET:不適合主鍵

  • 內部存整數,字串比較時隱含轉型,效能損耗
  • 適合狀態、類型、性別等靜態分類欄位
  • 極少數情況 (如產品類型表以 ENUM 為主鍵) 可用,但通常避免

字串類型:能避則避

  • 佔空間大、比較慢於整數
  • MyISAM 預設壓縮字串索引,導致查找變慢
  • 隨機字串 (MD5, SHA1, UUID) 危害極大:
    ① 插入隨機位置 → 頁分裂、隨機 I/O、聚簇索引碎片
    ② 相鄰邏輯行分散磁碟/記憶體 → 範圍查詢慢
    ③ 破壞快取局部性 → 命中率驟降

UUID 最佳實踐

  • 移除連字號或 UNHEX() 轉 16 位元組二進位,存 BINARY(16)
  • 讀取用 HEX() 還原
  • UUID 比純隨機略好 (有時間序列),但仍不如整數

黃金法則總結

  1. 盡量用整數 (BIGINT/INT/BIGINT UNSIGNED)
  2. 全庫關聯表主鍵/外鍵類型完全一致 (含屬性)
  3. 選最小滿足範圍的類型,預留成長空間
  4. 拒絕隨機字串主鍵,若必須用 UUID → 二進位存儲
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved