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

從四個細節入手做好MySQL查詢優化:EXPLAIN診斷、類型一致、LIKE通配符、替代方案

     編輯:MySQL 資料庫相關知識

細節一:EXPLAIN 當聽診器

EXPLAIN SELECT * FROM t;
-- type=ALL, key=NULL, rows=全表, Extra=空 → 全掃描,無索引

EXPLAIN SELECT * FROM t WHERE id=1;
-- type=const, key=PRIMARY, rows=1, Extra=空 → 主鍵點查,完美

EXPLAIN SELECT * FROM t WHERE name='abc';
-- type=ALL, key=NULL, rows=全表, Extra=Using where → 需加name索引

關注key(用了啥索引)、rows(掃描幾行)、Extra(filesort/temporary/Using where)。**NULL/空白=優化切入點**。

細節二:比較列類型必須一致

WHERE char_col = varchar_col雖兼容但**索引失效**,大數據下耗時差距指數級增長。
**修正**:建立INT UNSIGNED AUTO_INCREMENT代理鍵(如user_id),JOIN/WHERE走代理鍵,**整數比較最快**。

細節三:LIKE 起始通配符慎用

前端默認輸入框含%,用戶輸入%LOOK實為LIKE '%LOOK%' → **全索引掃描**。
**修正**:前端去默認%,需前綴查詢用LIKE 'LOOK%'(索引範圍掃描),需包含查詢才用%LOOK%。

細節四:能不用 LIKE 就不用

查產品編號6位數、以9開頭:

  • LIKE '9%' → 索引範圍掃描,尚可
  • WHERE code BETWEEN 900000 AND 999999 → **純數值範圍,更快**

同理:YEAR(dt)<2001 → dt<'2001-01-01';amt/7<24 → amt<168。**把運算挪到常量側,列側保持裸露,索引才能生效**。

總結口訣

「EXPLAIN先行,類型對齊,LIKE不頭通配,運算移常量。」
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved