「表越小、查越快」是鐵律。從列定義、索引設計、表結構三個維度實施數據減肥,提升 IO 與緩存效率。
NOT NULL DEFAULT 'default_val'| 場景 | 推薦類型 | 節省 |
|---|---|---|
| 整數範圍小 | TINYINT/SMALLINT/MEDIUMINT | vs INT 節省 25-50% |
| 固定長度代碼 | CHAR(n) / VARCHAR(n) 精確 n | 避免預留冗余 |
| 枚舉狀態 | ENUM('a','b','c') | 1-2 字節 vs 字符串 |
| IP 地址 | INT UNSIGNED + INET_ATON | 4 字節 vs 15 字節 |
精確長度兼具數據校驗作用(超長自動報錯)。
INDEX idx_name (col(10)) 只索引前 10 字符COUNT(DISTINCT col)/COUNT(*) 越接近 1 越適合建索引CHAR 定長:浪費空間換取固定偏移量 → 讀取定位快、無碎片VARCHAR 變長:節省空間但需額外 1-2 字節長度前綴、易產生碎片VARCHAR/TEXT/BLOB 列的表 → 全用定長類型拆分規則設計直接決定查詢路由複雜度,需結合業務訪問模式。
ROW_FORMAT=COMPRESSED)需 CPU 換 IO,評估權衡Data_free(碎片)、Index_length/Data_length 比值