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

打造高效能 MySQL 應用:資料庫設計與查詢優化實戰原則

     編輯:MySQL 資料庫相關知識

核心觀念:只存你真正需要的資料

許多人採取「廚房下水道」式設計,把所有可能用到的欄位全存進表。以產品目錄為例:名稱、說明、尺寸、重量、價格是核心,但「稅額」與「運費」屬衍生資料,應在查詢或應用層即時計算。若稅率變動,更新每筆產品記錄極其痛苦;若不存,只需調整計算邏輯即可。

迷思破解:擔心日後加欄位困難?MySQL ALTER TABLE 可輕鬆新增欄位:

ALTER TABLE products ADD rank INTEGER;

查詢只取必要欄位

開發初期常寫 SELECT * FROM sometable,隨資料增長會嚴重拖慢效能。應改為明確列出欄位:

SELECT name, rank, description FROM products;

維護性優於效能:程式碼應使用欄位名稱而非索引位置存取結果。欄位順序可能因 ALTER TABLE 或查詢重寫而改變,用名稱可透過 grep 快速定位修改處。

索引策略與資料型別選擇

  • 為 WHERE、JOIN、ORDER BY 常用欄位建立索引。
  • 整數型別依最大值選最小型別(TINYINT 1B、SMALLINT 2B、MEDIUMINT 3B、INT 4B、BIGINT 8B),百萬列可省 10MB+。
  • 定長用 CHAR,變長用 VARCHAR;超過 100 字元改用 TEXT 家族。
  • 金額欄位用 DECIMAL 避免浮點誤差。

避免常見效能殺手

  1. WHERE 子句對欄位做運算(如 WHERE YEAR(date_col) = 2024)會導致全表掃描,改用範圍查詢 WHERE date_col BETWEEN '2024-01-01' AND '2024-12-31'。
  2. LIKE 開頭用萬用字元(%keyword)無法使用索引。
  3. 隱含型別轉換:WHERE varchar_col = 123 會使索引失效,確保比較值型別一致。

總結

高效能 MySQL 應用源於:精簡資料模型、精準查詢欄位、合理索引設計、避開優化器陷阱。開發早期養成習慣,上線後才不會因資料量暴增而崩潰。

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