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

資料庫技巧:MySQL 十大優化技巧 (上) — 查詢快取、EXPLAIN、LIMIT 1、索引搜尋欄位

     編輯:MySQL 資料庫相關知識

Web 開發者除程式效能外,資料庫存取速度同樣關鍵。本文介紹 MySQL 十大優化技巧前四招。

1. 善用查詢快取

MySQL 內建 Query Cache,相同查詢命中快取極快。但非確定性函數會導致快取失效:

-- 快取失效:CURDATE() 每次不同
SELECT username FROM user WHERE signup_date >= CURDATE();
-- 快取生效:應用層產生固定日期字串
$today = date("Y-m-d");
SELECT username FROM user WHERE signup_date >= '$today';

原理:快取以 SQL 文本為鍵,含動態函數的 SQL 永不重複,無法命中。

2. 用 EXPLAIN 解析 SELECT 執行計畫

EXPLAIN SELECT ... 顯示索引使用、掃描行數、排序、臨時表等資訊,快速定位瓶頸。phpMyAdmin 直接可視化輸出。

案例:忘記在 group_id 加索引導致 type=ALL (全表掃描);加上索引後變為 type=ref,rows 大幅下降。

EXPLAIN 未加索引

EXPLAIN 加索引後

3. 善用 LIMIT 1 取得唯一行

明知只需一行 (如存在性檢查) 時加 LIMIT 1,引擎找到即停止,避免全表/全索引掃描。

-- 不佳
SELECT * FROM user WHERE state = 'Alabama';
-- 推薦
SELECT 1 FROM user WHERE state = 'Alabama' LIMIT 1;

4. 為搜尋欄位建立索引

索引不限於主鍵/唯一鍵。任何 WHERE、JOIN、ORDER BY 涉及的欄位都應評估建立索引。phpMyAdmin 可視化索引基數分佈輔助決策。

索引基數分佈


前四招聚焦查詢層面:快取機制理解、EXPLAIN 成必備技能、LIMIT 1 止損、索引覆蓋搜尋欄位。下篇將介紹進階優化技巧。

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