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

MySQL 效能優化八大關鍵技巧(下)

     編輯:MySQL 資料庫相關知識

7. 善用索引提升查詢速度

索引是資料庫效能調校最常用的手段,能讓伺服器以遠超全表掃描的速度定位特定行。對於包含 MAX()、MIN()、ORDER BY 的查詢,效能提升尤為明顯。

哪些欄位適合建立索引?

  • 出現在 JOIN、WHERE、ORDER BY 子句中的欄位
  • 基數(Cardinality)高、重複值少的欄位

避免對低基數欄位建索引,例如 ENUM 類型的「省份」欄位,重複值極多,索引不僅無效,反而增加寫入開銷。

索引建立時機

可在 CREATE TABLE 時同步建立,亦可事後用 ALTER TABLE 或 CREATE INDEX 補充。

全文索引注意事項

MySQL 3.23.23+ 支援 FULLTEXT 索引,僅限 MyISAM 引擎。大量資料匯入時,建議先匯入再建立全文索引,速度遠快於先建索引再匯入。

8. 撰寫高效的查詢語句

即使有索引,不當的 SQL 寫法也會導致索引失效。以下為關鍵優化原則:

原則一:同類型欄位比較

避免 INT 比較 BIGINT;CHAR 與 VARCHAR 長度相同時可比較。

原則二:索引欄位勿用函數運算

-- 失效:YEAR() 導致索引無法使用
SELECT * FROM orders WHERE YEAR(order_date) < 2001;
-- 高效:直接比較日期常數
SELECT * FROM orders WHERE order_date < '2001-01-01';

-- 數值運算同理
SELECT * FROM inventory WHERE amount/7 < 24;      -- 失效
SELECT * FROM inventory WHERE amount < 24*7;      -- 高效

原則三:謹慎使用 LIKE 通配符

-- 全表掃描
SELECT * FROM books WHERE name LIKE 'MySQL%';
-- 利用索引範圍查詢
SELECT * FROM books WHERE name >= 'MySQL' AND name < 'MySQM';

原則四:避免隱含型別轉換

查詢中若發生自動型別轉換,索引同樣失效。確保比較雙方資料型別一致。

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