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

MySQL入門系列:欄位型別選擇與查詢效能優化策略

     編輯:MySQL 資料庫相關知識

欄位型別選擇黃金法則

  1. 優先使用定長欄位: 如 CHAR 優於 VARCHAR。雖佔較多空間,但頻繁更新的表格能避免碎片,處理速度更快。
  2. 長度剛好夠用: 最長值 40 字元就用 CHAR(40),勿用 CHAR(255)。整數型別同理,MEDIUMINT 優於 BIGINT,表格更小、運算更快。
  3. 定義為 NOT NULL: 處理更快、佔空間更少、查詢邏輯更簡單(無需處理 NULL 特例)。
  4. 善用 ENUM: 固定值集合的欄位改為 ENUM,內部以數值儲存,比較更高效。
  5. 執行 PROCEDURE ANALYSE(): MySQL 3.23+ 可分析表格並建議最佳欄位型別。可限制 ENUM 建議條件(如值數 ≤16、長度 ≤256 位元組)避免定義過長。
  6. 利用 BLOB 封裝資料: 將結構化/半結構化資料打包存入單一 BLOB,可減少查詢次數、簡化結構變更(如問卷增減題目)。代價是應用層需編解碼,且大量 DELETE/UPDATE 易產生碎片。
  7. 定期 OPTIMIZE TABLE: 含可變長欄位(特別是 BLOB)的表格易碎片,定期整理可維持效能。
  8. 合成索引/雜湊值: 針對 BLOB 或大型文字欄位,建立雜湊值欄位(MySQL 3.23.2+ 可用 MD5())並建立索引,精確比對查詢極快(不支援範圍搜尋)。
  9. 避免無謂檢索大型 BLOB/TEXT: 除非 WHERE 子句能精確鎖定列,否則勿用 SELECT *。可另存識別欄位先篩選,再取 BLOB。
  10. 將 BLOB 獨立到子表: 移出 BLOB 後主表轉為定長列格式,減少碎片並享有定長列效能優勢。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved