首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 分區與 SQL 優化(一):EXPLAIN 分析、索引類型與執行計畫優化

     編輯:MySQL 綜合教學

SQL 執行頻率監控

-- 當前會話
SHOW SESSION STATUS LIKE 'Com_%';
-- 全域累計
SHOW GLOBAL STATUS LIKE 'Com_%';

EXPLAIN 核心欄位解讀

EXPLAIN SELECT * FROM zi_emp WHERE tid = 1000\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: zi_emp
type: ALL          -- 關鍵:ALL=全表掃描,最差
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 2
Extra: Using where

type 類型效能排序(由好到壞)

  1. system/const:單行查找(主鍵/唯一索引等值)
  2. eq_ref:唯一索引掃描
  3. ref:非唯一索引/前綴掃描
  4. range:索引範圍掃描
  5. index:索引全掃描
  6. ALL:全表掃描(最差)

EXPLAIN EXTENDED + SHOW WARNINGS:查看優化器重寫後的 SQL

EXPLAIN EXTENDED SELECT * FROM zi_emp;
SHOW WARNINGS\G
-- 輸出優化器內部轉換後的標準化 SQL,可作為改寫參考

分區表專用:EXPLAIN PARTITIONS

EXPLAIN PARTITIONS SELECT * FROM zi_emp WHERE ...;
-- 顯示 partitions 欄位,確認分區裁剪是否生效

實戰優化清單

  • 避免 SELECT *,只取需要欄位。
  • WHERE 條件欄位建立索引,注意最左前綴原則。
  • 用 EXPLAIN 確認 type 不為 ALL、key 有值、rows 掃描行數合理。
  • 大表分區後,查詢條件務必包含分區鍵,否則會掃描全部分區。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved