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

MySQL 效能優化實戰:資料庫結構設計、索引策略與查詢語句調校三大面向

     編輯:MySQL 資料庫相關知識

一、資料庫結構設計優化

欄位型別定義黃金法則

  1. 選用最小長度:滿足需求前提下越小越好
  2. 優先固定長度型別:CHAR 優於 VARCHAR(查詢速度較快)
  3. 盡可能 NOT NULL:NULL 需額外位元組標記,查詢優化較難
  4. 避免 ZEROFILL:數值型欄位不必要的零填充增加儲存與處理開銷
  5. 已知有限值集合用 ENUM/SET:字串儲存轉為整數索引,極大提升效率

MySQL 欄位長度對照表

型別儲存大小
TINYINT1 Byte
SMALLINT2 Bytes
MEDIUMINT3 Bytes
INT / INTEGER4 Bytes
BIGINT8 Bytes
FLOAT (X≤24)4 Bytes
DOUBLE / FLOAT (X>24)8 Bytes
DECIMAL(M,D)M Bytes (M≥D)
DATE3 Bytes
DATETIME8 Bytes
TIMESTAMP4 Bytes
TIME4 Bytes
YEAR1 Byte
CHAR(M)M Bytes
VARCHAR(M)實際長度 + 1 Byte
TINYBLOB/TEXT實際長度 + 1 Byte
BLOB/TEXT實際長度 + 2 Bytes
MEDIUMBLOB/TEXT實際長度 + 3 Bytes
LONGBLOB/TEXT實際長度 + 4 Bytes
ENUM1-2 Bytes (視枚舉值數)
SET1,2,3,4,8 Bytes (視成員數)

二、索引優化核心原則(查詢密集場景)

  1. 索引欄位越短效率越高
  2. 索引欄位值重複越少效率越高(高選擇性)
  3. GROUP BY 欄位按出現順序建立複合索引
  4. DISTINCT 欄位按出現順序建立複合索引
  5. WHERE ... AND ... 多欄位按出現順序建立複合索引
  6. WHERE ... OR ... 單獨為重複值最少的欄位建單欄索引
  7. 連接查詢為連接欄位建立索引
  8. 主鍵本身即唯一索引,勿重複建立 UNIQUE 索引
  9. 索引欄位盡可能 NOT NULL
  10. 寫入密集表:盡量減少索引,特別是複合索引與 UNIQUE 索引

三、查詢語句優化實戰技巧

  1. 善用 EXPLAIN 分析索引使用情況,尋找最佳寫法
  2. 避免 SELECT *,只查必要欄位
  3. 索引掃描行數越少、欄位越短,效率越高
  4. 避免 MySQL 函數處理結果,交給應用層處理
  5. LIMIT 偏移量越小越快(LIMIT 10000, 20 比 LIMIT 0, 20 慢)
  6. WHERE AND 多欄位順序與複合索引定義順序一致
  7. LIKE 通配符不在最左端才用索引(LIKE 'abc%' 用索引,LIKE '%abc' 不用)
  8. MySQL 4.1+ 避免子查詢,改用 JOIN 實現
  9. 減少函數使用,能用單純運算式代替就代替
  10. WHERE OR 不同欄位拆分為多條單一欄位查詢效率更高

優化檢查清單

  • [ ] 核心表主鍵是否為整數自增
  • [ ] 外鍵欄位是否有索引
  • [ ] 高頻查詢欄位是否有適當索引
  • [ ] 是否有未使用的索引(定期 SHOW INDEX 檢視)
  • [ ] 慢查詢日誌是否開啟並定期分析
  • [ ] 大表是否定期 OPTIMIZE TABLE 整理碎片
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved